Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
UniQP
searching Neon…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
13 ms
·
1.
▲
by
UniQP
8y ago
The blog post doesn't mention integer overflows. If integers wrap around on overflow, min(INT_MIN - 1, 0 - 1) = -1 but min(INT_MIN, 0) - 1 = INT_MAX. However, in PHP the values are converted to floats, which should preserve the equatio
2.
▲
by
UniQP
9y ago
None, it's a hardware problem.
3.
▲
by
UniQP
10y ago
Since there is also a programming language called C2, I took a look at the wrong compiler. Can you provide a link to the source code?
4.
▲
by
UniQP
10y ago
You can stay in SSA form even after register allocation. In libFirm the assigned registers are just attributes of the values in the SSA representation. There was some additional discussion regarding this in [1]. GCC uses a separate represen
5.
▲
by
UniQP
10y ago
SSA is standard for the middle end but not for the backend. According to my knowledge there are only two compilers with an SSA-based backend: libFirm (www.libfirm.org) and the Go compiler.
6.
▲
by
UniQP
10y ago
Does anyone know an open source tool for monoalphabetic (or polyalphabetic) substitution that can handle arbitrary dictionaries?
7.
▲
by
UniQP
11y ago
Compile time is an issue of C++ but not of C.
8.
▲
by
UniQP
11y ago
[citation needed]
9.
▲
by
UniQP
11y ago
I'm sure, you can also self-compile the tip. Would be really interesting if this was done for benchmarks.
10.
▲
by
UniQP
11y ago
> So it's not impossible, but libfirm avoids it or performs the necessary phi insertion in various places to avoid creating invalid SSA for the representation it has. It's impossible to have one edge pointing to multiple reachi
11.
▲
by
UniQP
11y ago
> There are theoretical benefits, but in practice, LLVM does pretty well with it's current scheme. I think having a decoupled spilling phase is nice feature of the SSA-based scheme. However, I don't say that LLVM (or GCC) shoul
12.
▲
by
UniQP
11y ago
> At some point it lowers out of SSA, but you have to do that at some point anyway. libfirm never goes out of SSA (since it uses a graph-based representation it's simply impossible: the data dependency edges need one target). It c
13.
▲
by
UniQP
11y ago
Yes, in the middle end, but they don't have an SSA-based back end (for example SSA-based register allocation).
14.
▲
by
UniQP
11y ago
After libfirm [1], the Go compiler now seems to be the second mature compiler with an SSA-based backend. I hope more compilers will follow. I missed some references to corresponding papers in the source code. For instance, is the register a
15.
▲
by
UniQP
11y ago
As stated in [1] they use a variant of "Simple and Efficient Construction of Static Single Assignment Form" [2], which does not require a dominator tree (or a liveness analysis). [1] https://github.com/golang/
16.
▲
by
UniQP
11y ago
libfirm ( http://pp.ipd.kit.edu/firm/ ) uses SSA-based register allocation ( http://d-nb.info/986273813/34 ), which allows a decoupled spilling phase. Moreover, the register assignment becomes polynom
17.
▲
by
UniQP
11y ago
You are right, this should be static single assignment.
18.
▲
by
UniQP
11y ago
There are a lot of compiler optimizations that uses global analyses/optimizations that are not covered by optimizing a sequence of assembly instructions. Thus, I doubt that CompCert + STOKE would reach the code quality of production co
19.
▲
by
UniQP
11y ago
That's because a) the initial STOKE paper (2013) is older than Souper (initial commit 2014) and b) there is no Souper paper so far
20.
▲
by
UniQP
11y ago
Documentation->LLVM: http://pp.ipd.kit.edu/firm/LLVM ;-)
21.
▲
by
UniQP
11y ago
That sounds like an (e-)SSA-based optimization but not like an SSA backend.
22.
▲
by
UniQP
11y ago
Does anyone know the current state of the SSA backend mentioned in https://news.ycombinator.com/item?id=9099744 ?
23.
▲
by
UniQP
11y ago
Jump threading can also enables additional optimizations. For instance, if you apply jump threading to int eight(int a) { int b; if (a) { b = 1; } else { b = a; } b += 3; if (a) { return b + b
24.
▲
by
UniQP
11y ago
I do not have an example for Souper, but the Optgen tool uses similar techniques and the paper provides a list of missing optimizations for LLVM, GCC and ICC: http://pp.info.uni-karlsruhe.de/uploads/publikationen/b
25.
▲
by
UniQP
11y ago
The permutation problem is not related to IR superoptimization itself. The goal of an optimization pass is to improve the performance of an average, and that's exactly what the IR superoptimization does.
26.
▲
by
UniQP
11y ago
My advisor once said "Optimization means: sometimes, it is not getting worse", and that's excactly what happens if you perform any optimization on IR level. You don't have any guarantee that your result is optimal (regar
27.
▲
by
UniQP
11y ago
The advantage of performing superoptimization on IR level is that you have explicit data dependencies (due to SSA form). Thus you don't have unrelated instructions in between. Figure 1 of the cited Optgen paper http://pp.inf
28.
▲
by
UniQP
11y ago
What do you mean by more advanced? The LLVM implementation is more mature from a software point of view, but libFirm's implementation supports more PBQP reductions, and thus may find a better PBQP solution.