- Oct 23, 2011
-
-
Chandler Carruth authored
to get important constant branch probabilities and use them for finding the best branch out of a set of possibilities. llvm-svn: 142762
-
Chandler Carruth authored
llvm-svn: 142761
-
Peter Collingbourne authored
llvm-svn: 142760
-
Peter Collingbourne authored
llvm-svn: 142759
-
Peter Collingbourne authored
in-class member initialisers). llvm-svn: 142758
-
Peter Collingbourne authored
llvm-svn: 142757
-
Peter Collingbourne authored
llvm-svn: 142756
-
Peter Collingbourne authored
instead of silently discarding them. As a side effect, this improves diagnostics for constexpr class templates slightly. llvm-svn: 142755
-
Benjamin Kramer authored
Python.h includes a ton of macros that can cause weird behavior down the road. llvm-svn: 142754
-
Benjamin Kramer authored
llvm-svn: 142753
-
Benjamin Kramer authored
50% is much more readable than 5.000000e-01. llvm-svn: 142752
-
Benjamin Kramer authored
llvm-svn: 142751
-
Tobias Grosser authored
-polly-detect-only=<functionname> allows to limit the scop detection to a single function. llvm-svn: 142750
-
Tobias Grosser authored
llvm-svn: 142749
-
Tobias Grosser authored
llvm-svn: 142748
-
Tobias Grosser authored
llvm-svn: 142747
-
Tobias Grosser authored
llvm-svn: 142746
-
Tobias Grosser authored
llvm-svn: 142745
-
Tobias Grosser authored
llvm-svn: 142744
-
Chandler Carruth authored
discussions with Andy. Fundamentally, the previous algorithm is both counter productive on several fronts and prioritizing things which aren't necessarily the most important: static branch prediction. The new algorithm uses the existing loop CFG structure information to walk through the CFG itself to layout blocks. It coalesces adjacent blocks within the loop where the CFG allows based on the most likely path taken. Finally, it topologically orders the block chains that have been formed. This allows it to choose a (mostly) topologically valid ordering which still priorizes fallthrough within the structural constraints. As a final twist in the algorithm, it does violate the CFG when it discovers a "hot" edge, that is an edge that is more than 4x hotter than the competing edges in the CFG. These are forcibly merged into a fallthrough chain. Future transformations that need te be added are rotation of loop exit conditions to be fallthrough, and better isolation of cold block chains. I'm also planning on adding statistics to model how well the algorithm does at laying out blocks based on the probabilities it receives. The old tests mostly still pass, and I have some new tests to add, but the nested loops are still behaving very strangely. This almost seems like working-as-intended as it rotated the exit branch to be fallthrough, but I'm not convinced this is actually the best layout. It is well supported by the probabilities for loops we currently get, but those are pretty broken for nested loops, so this may change later. llvm-svn: 142743
-
Benjamin Kramer authored
llvm-svn: 142742
-
Craig Topper authored
llvm-svn: 142741
-
Cameron Zwarich authored
element types, even though the element extraction code does. It is surprising that this bug has been here for so long. Fixes <rdar://problem/10318778>. llvm-svn: 142740
-
Ted Kremenek authored
[analyzer] Remove LocationContext creation methods from AnalysisManager, and change clients to use AnalysisContext instead. WIP to remove/reduce ExprEngine's usage of AnalysisManager. llvm-svn: 142739
-
Craig Topper authored
llvm-svn: 142738
-
Craig Topper authored
llvm-svn: 142737
-
Nick Lewycky authored
llvm-svn: 142736
-
- Oct 22, 2011
-
-
Nick Lewycky authored
elimination on them too. llvm-svn: 142735
-
Bob Wilson authored
llvm-svn: 142734
-
Richard Smith authored
const expression evaluation subclasses, and remove some APValue copying and malloc traffic in the process. llvm-svn: 142733
-
Howard Hinnant authored
llvm-svn: 142732
-
Nick Lewycky authored
able to constant fold load instructions where the argument is a constant. Second, we should be able to watch multiple PHI nodes through the loop; this patch only supports PHIs in loop headers, more can be done here. With this patch, we now constant evaluate: static const int arr[] = {1, 2, 3, 4, 5}; int test() { int sum = 0; for (int i = 0; i < 5; ++i) sum += arr[i]; return sum; } llvm-svn: 142731
-
Benjamin Kramer authored
llvm-svn: 142730
-
Nadav Rotem authored
llvm-svn: 142729
-
Jim Grosbach authored
llvm-svn: 142728
-
Nadav Rotem authored
llvm-svn: 142727
-
Benjamin Kramer authored
llvm-svn: 142726
-
Benjamin Kramer authored
llvm-svn: 142725
-
Nadav Rotem authored
SHL inserts zeros from the right, thus even when the original sign_extend_inreg value was of 1-bit, we need to sra. llvm-svn: 142724
-
NAKAMURA Takumi authored
Former RUN line does not make sense on Win32 hosts. Win32 hosts would not be expected to set appropriate $PWD. Latter RUN line might be made valid if PathV2::is_absolute("/foo") would be true. Unfortunately, "/foo" should not be treated as absolute path on Win32. FYI, on mingw32 with MSYS bash (it has 'shell' feature); Former) $PWD is set as "X:/hogehoge/test/Driver" Latter) PWD=/foo sets "X:/root/to/msys/foo" to $PWD. llvm-svn: 142721
-