- Sep 26, 2012
-
-
Benjamin Kramer authored
BB->end() returns a sentinel value that is not a legal insert point. llvm-svn: 164699
-
Benjamin Kramer authored
APFloat::roundToIntegral: Special values don't keep the exponent value up to date, don't rely on it. Add a couple of unit tests for special floats. Fixes 13929, found by MemorySanitizer. llvm-svn: 164698
-
Hans Wennborg authored
- Put statistics in alphabetical order - Don't use getZextValue when building TableInt, just use APInts - Introduce Create{Z,S}ExtOrTrunc in IRBuilder. llvm-svn: 164696
-
Hans Wennborg authored
- Finish assert messages with exclamation mark - Move overflow checking into ShouldBuildLookupTable. llvm-svn: 164692
-
Chandler Carruth authored
contrived for these yet, as I spotted them by inspection and the test cases are a bit more tricky to phrase. llvm-svn: 164691
-
Chandler Carruth authored
alignment guarantees attached, re-compute the alignment so that we consider offsets which impact alignment. llvm-svn: 164690
-
Chandler Carruth authored
rewriter in SROA to carry a proper alignment. This involves interrogating various sources of alignment, etc. This is a more complete and principled fix to PR13920 as well as related bugs pointed out by Eli in review and by inspection in the area. Also by inspection fix the integer and vector promotion paths to create aligned loads and stores. I still need to work up test cases for these... Sorry for the delay, they were found purely by inspection. llvm-svn: 164689
-
Chandler Carruth authored
and stores. These will be used in subsequnet patches to SROA to more systematically manage the alignment on loads and stores. llvm-svn: 164688
-
NAKAMURA Takumi authored
llvm-svn: 164687
-
Benjamin Kramer authored
llvm-svn: 164686
-
James Molloy authored
llvm-svn: 164685
-
Hans Wennborg authored
tables in bitmaps when they fit in a target-legal register. This saves some space, and it also allows for building tables that would otherwise be deemed too sparse. One interesting case that this hits is example 7 from http://blog.regehr.org/archives/320. We currently generate good code for this when lowering the switch to the selection DAG: we build a bitmask to decide whether to jump to one block or the other. My patch will result in the same bitmask, but it removes the need for the jump, as the return value can just be retrieved from the mask. llvm-svn: 164684
-
Hans Wennborg authored
breaking out the building of lookup tables into a separate class. llvm-svn: 164682
-
NAKAMURA Takumi authored
llvm-svn: 164681
-
Sylvestre Ledru authored
For example, under a Linux chroot, /proc/ might not be mounted. Therefor, we test if this file exist. If it is the case, use it (the current behavior). Otherwise, we fall back to the detection used by *BSD. The issue has been reported initially on the Debian bug tracker: http://bugs.debian.org/674588 llvm-svn: 164676
-
Michael Liao authored
llvm-svn: 164675
-
Michael Liao authored
llvm-svn: 164674
-
Michael Liao authored
llvm-svn: 164673
-
Duncan Sands authored
llvm-svn: 164671
-
Craig Topper authored
llvm-svn: 164670
-
Chandler Carruth authored
This should really, really fix PR13916. For real this time. The underlying bug is... a bit more subtle than I had imagined. The setup is a code pattern that leads to an @llvm.memcpy call with two equal pointers to an alloca in the source and dest. Now, not any pattern will do. The alloca needs to be formed just so, and both pointers should be wrapped in different bitcasts etc. When this precise pattern hits, a funny sequence of events transpires. First, we correctly detect the potential for overlap, and correctly optimize the memcpy. The first time. However, we do simplify the set of users of the alloca, and that causes us to run the alloca back through the SROA pass in case there are knock-on simplifications. At this point, a curious thing has happened. If we happen to have an i8 alloca, we have direct i8 pointer values. So we don't bother creating a cast, we rewrite the arguments to the memcpy to dircetly refer to the alloca. Now, in an unrelated area of the pass, we have clever logic which ensures that when visiting each User of a particular pointer derived from an alloca, we only visit that User once, and directly inspect all of its operands which refer to that particular pointer value. However, the mechanism used to detect memcpy's with the potential to overlap relied upon getting visited once per *Use*, not once per *User*. This is always true *unless* the same exact value is both source and dest. It turns out that almost nothing actually produces that pattern though. We can hand craft test cases that more directly test this behavior of course, and those are included. Also, note that there is a significant missed optimization here -- we prove in many cases that there is a non-volatile memcpy call with identical source and dest addresses. We shouldn't prevent splitting the alloca in that case, and in fact we should just remove such memcpy calls eagerly. I'll address that in a subsequent commit. llvm-svn: 164669
-
Craig Topper authored
llvm-svn: 164668
-
Craig Topper authored
Replace calls to getSizeInBits with getExtendedSizeInBits since its already known its an extended type. llvm-svn: 164667
-
Craig Topper authored
llvm-svn: 164666
-
Craig Topper authored
llvm-svn: 164664
-
Craig Topper authored
llvm-svn: 164663
-
Bill Wendling authored
scalar-to-vector conversion that we cannot handle. For instance, when an invalid constraint is used in an inline asm statement. <rdar://problem/12284092> llvm-svn: 164662
-
Michael Liao authored
- Instead of embedding 'lock' into each mnemonic of atomic instructions except 'xchg', we teach X86 assembly printer to output 'lock' prefix similar to or consistent with code emitter. llvm-svn: 164659
-
Bill Wendling authored
scalar-to-vector conversion that we cannot handle. For instance, when an invalid constraint is used in an inline asm statement. <rdar://problem/12284092> llvm-svn: 164657
-
Michael Ilseman authored
Fixed issue with Release build. llvm-svn: 164654
-
Jordan Rose authored
The Apple buildbots are set up to pass --target to configure for both cross- and non-cross-compile builds, and the standard autoconf response to this is to set the program prefix to '<target>-'. Until we can figure out the proper way to handle this (don't pass --target? pass an explicit --program-prefix=""? don't auto-populate program_prefix with target_alias?) it's more important to keep the buildbots running. This reverts r164633 / ba48ceb1a3802e20e781ef04ea2573ffae2ac414. llvm-svn: 164651
-
Akira Hatanaka authored
llvm-svn: 164642
-
Nick Lewycky authored
only a missed optimization opportunity if the store is over-aligned, but a miscompile if the store's new type has a higher natural alignment than the memcpy did. Fixes PR13920! llvm-svn: 164641
-
Reed Kotler authored
llvm-svn: 164640
-
- Sep 25, 2012
-
-
Nick Lewycky authored
reason we were getting two of the same alloca is because of a memmove/memcpy which had the same alloca in both the src and dest. Now we detect that case directly. This has the same testcase as before, but fixes a clang test CodeGenObjC/exceptions.m which runs clang -O2. llvm-svn: 164636
-
Nick Lewycky authored
Chandler, it's not obvious that it's okay that this alloca gets into the list twice to begin with. Please review and see whether this is the fix you really want, but I wanted to get a fix checked in quickly. llvm-svn: 164634
-
Sebastian Pop authored
llvm-svn: 164633
-
Bill Wendling authored
llvm-svn: 164631
-
Sean Silva authored
llvm-svn: 164630
-
Bill Wendling authored
llvm-svn: 164629
-