- Sep 16, 2013
-
-
Arnold Schwaighofer authored
We would have to compute the pre increment value, either by computing it on every loop iteration or by splitting the edge out of the loop and inserting a computation for it there. For now, just give up vectorizing such loops. Fixes PR17179. llvm-svn: 190790
-
Evgeniy Stepanov authored
llvm-svn: 190782
-
Peter Collingbourne authored
Previous discussion: http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-July/063909.html Differential Revision: http://llvm-reviews.chandlerc.com/D1191 llvm-svn: 190773
-
Benjamin Kramer authored
llvm-svn: 190770
-
- Sep 14, 2013
-
-
Robert Wilhelm authored
llvm-svn: 190750
-
Chandler Carruth authored
This pass was based on the previous (essentially unused) profiling infrastructure and the assumption that by ordering the basic blocks at the IR level in a particular way, the correct layout would happen in the end. This sometimes worked, and mostly didn't. It also was a really naive implementation of the classical paper that dates from when branch predictors were primarily directional and when loop structure wasn't commonly available. It also didn't factor into the equation non-fallthrough branches and other machine level details. Anyways, for all of these reasons and more, I wrote MachineBlockPlacement, which completely supercedes this pass. It both uses modern profile information infrastructure, and actually works. =] llvm-svn: 190748
-
- Sep 13, 2013
-
-
Evgeniy Stepanov authored
Compiler part. llvm-svn: 190689
-
Duncan Sands authored
disabled. llvm-svn: 190668
-
- Sep 11, 2013
-
-
Hal Finkel authored
Allow targets to customize the default behavior of the generic loop unrolling transformation. This will be used by the PowerPC backend when targeting the A2 core (which is in-order with a deep pipeline), and using more aggressive defaults is important. llvm-svn: 190542
-
Benjamin Kramer authored
It works with clang, but GCC has different rules so we can't make all of those hidden. This reverts commit r190534. llvm-svn: 190536
-
Benjamin Kramer authored
Worth 100k on a linux/x86_64 Release+Asserts clang. llvm-svn: 190534
-
Matt Arsenault authored
This doesn't change anything since malloc always returns address space 0. llvm-svn: 190498
-
Matt Arsenault authored
llvm-svn: 190491
-
Matt Arsenault authored
llvm-svn: 190490
-
Eli Friedman authored
llvm-svn: 190461
-
Eli Friedman authored
llvm-svn: 190450
-
Eli Friedman authored
llvm-svn: 190446
-
Eli Friedman authored
llvm-svn: 190442
-
- Sep 10, 2013
-
-
Matt Arsenault authored
llvm-svn: 190425
-
Benjamin Kramer authored
llvm-svn: 190422
-
Kostya Serebryany authored
[asan] refactor the use-after-return API so that the size class is computed at compile time instead of at run-time. llvm part llvm-svn: 190407
-
Matt Arsenault authored
llvm-svn: 190375
-
Eli Friedman authored
LLVM IR doesn't currently allow atomic bool load/store operations, and the transformation is dubious anyway because it isn't profitable on all platforms. PR17163. llvm-svn: 190357
-
- Sep 09, 2013
-
-
Quentin Colombet authored
Several architectures use the same instruction to perform both a comparison and a subtract. The instruction selection framework does not allow to consider different basic blocks to expose such fusion opportunities. Therefore, these instructions are “merged” by CSE at MI IR level. To increase the likelihood of CSE to apply in such situation, we reorder the operands of the comparison, when they have the same complexity, so that they matches the order of the most frequent subtract. E.g., icmp A, B ... sub B, A <rdar://problem/14514580> llvm-svn: 190352
-
Bob Wilson authored
The work on this project was left in an unfinished and inconsistent state. Hopefully someone will eventually get a chance to implement this feature, but in the meantime, it is better to put things back the way the were. I have left support in the bitcode reader to handle the case-range bitcode format, so that we do not lose bitcode compatibility with the llvm 3.3 release. This reverts the following commits: 155464, 156374, 156377, 156613, 156704, 156757, 156804 156808, 156985, 157046, 157112, 157183, 157315, 157384, 157575, 157576, 157586, 157612, 157810, 157814, 157815, 157880, 157881, 157882, 157884, 157887, 157901, 158979, 157987, 157989, 158986, 158997, 159076, 159101, 159100, 159200, 159201, 159207, 159527, 159532, 159540, 159583, 159618, 159658, 159659, 159660, 159661, 159703, 159704, 160076, 167356, 172025, 186736 llvm-svn: 190328
-
- Sep 07, 2013
-
-
Manman Ren authored
instead of having its own implementation. The implementation of isTBAAVtableAccess is in TypeBasedAliasAnalysis.cpp since it is related to the format of TBAA metadata. The path for struct-path tbaa will be exercised by test/Instrumentation/ThreadSanitizer/read_from_global.ll, vptr_read.ll, and vptr_update.ll when struct-path tbaa is on by default. llvm-svn: 190216
-
- Sep 06, 2013
-
-
Matt Arsenault authored
llvm-svn: 190113
-
Matt Arsenault authored
llvm-svn: 190112
-
- Sep 05, 2013
-
-
Matt Arsenault authored
llvm-svn: 190093
-
Rafael Espindola authored
llvm-svn: 190090
-
Nick Lewycky authored
llvm-svn: 190035
-
- Sep 04, 2013
-
-
Rafael Espindola authored
I am about to patch this code, and this makes the diff far more readable. llvm-svn: 189982
-
Rafael Espindola authored
llvm-svn: 189971
-
Rafael Espindola authored
No functionality change. llvm-svn: 189969
-
Rafael Espindola authored
llvm-svn: 189967
-
Rafael Espindola authored
This reverts commit r189886. I found a corner case where this optimization is not valid: Say we have a "linkonce_odr unnamed_addr" in two translation units: * In TU 1 this optimization kicks in and makes it hidden. * In TU 2 it gets const merged with a constant that is *not* unnamed_addr, resulting in a non unnamed_addr constant with default visibility. * The static linker rules for combining visibility them produce a hidden symbol, which is incorrect from the point of view of the non unnamed_addr constant. The one place we can do this is when we know that the symbol is not used from another TU in the same shared object, i.e., during LTO. I will move it there. llvm-svn: 189954
-
Tim Northover authored
"(icmp op i8 A, B)" is equivalent to "(icmp op i8 (A & 0xff), B)" as a degenerate case. Allowing this as a "masked" comparison when analysing "(icmp) &/| (icmp)" allows us to combine them in more cases. rdar://problem/7625728 llvm-svn: 189931
-
Tim Northover authored
Even in cases which aren't universally optimisable like "(A & B) != 0 && (A & C) != 0", the masks can make one of the comparisons completely redundant. In this case, since we've gone to the effort of spotting masked comparisons we should combine them. rdar://problem/7625728 llvm-svn: 189930
-
Rafael Espindola authored
Original message: If a constant or a function has linkonce_odr linkage and unnamed_addr, mark hidden. Being linkonce_odr guarantees that it is available in every dso that needs it. Being a constant/function with unnamed_addr guarantees that the copies don't have to be merged. llvm-svn: 189886
-
Michael Gottesman authored
llvm-svn: 189870
-