| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
of testing for its presence at cmake time.
This way the build automatically regenerates the makefiles when a svn
update brings in a new sublibrary.
llvm-svn: 126068
|
| |
|
|
|
|
|
| |
the instruction passed in. Make sure to account for this correctly, instead
of looping infinitely.
llvm-svn: 126058
|
| |
|
|
| |
llvm-svn: 126054
|
| |
|
|
|
|
|
| |
This is reasonable to do since all bt-mem forms do the
same thing.
llvm-svn: 126047
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
constant, including globals. This makes us generate much more "pretty" pattern
globals as well because it doesn't break it down to an array of bytes all the
time.
This enables us to handle stores of relocatable globals. This kicks in about
48 times in 254.gap, giving us stuff like this:
@.memset_pattern40 = internal constant [2 x %struct.TypHeader* (%struct.TypHeader*, %struct.TypHeader*)*] [%struct.TypHeader* (%struct.TypHeader*, %struct
.TypHeader*)* @IsFalse, %struct.TypHeader* (%struct.TypHeader*, %struct.TypHeader*)* @IsFalse], align 16
...
call void @memset_pattern16(i8* %scevgep5859, i8* bitcast ([2 x %struct.TypHeader* (%struct.TypHeader*, %struct.TypHeader*)*]* @.memset_pattern40 to i8*
), i64 %tmp75) nounwind
llvm-svn: 126044
|
| |
|
|
|
|
| |
them as splat values.
llvm-svn: 126041
|
| |
|
|
|
|
|
|
|
|
|
| |
unsplatable values into memset_pattern16 when it is available
(recent darwins). This transforms lots of strided loop stores
of ints for example, like 5 in vpr:
Formed memset: call void @memset_pattern16(i8* %4, i8* getelementptr inbounds ([16 x i8]* @.memset_pattern9, i32 0, i32 0), i64 %tmp25)
from store to: {%3,+,4}<%11> at: store i32 3, i32* %scevgep, align 4, !tbaa !4
llvm-svn: 126040
|
| |
|
|
| |
llvm-svn: 126018
|
| |
|
|
|
|
| |
debug info reduced by almost 7%.
llvm-svn: 126009
|
| |
|
|
| |
llvm-svn: 126005
|
| |
|
|
| |
llvm-svn: 126004
|
| |
|
|
| |
llvm-svn: 126003
|
| |
|
|
| |
llvm-svn: 126002
|
| |
|
|
| |
llvm-svn: 126001
|
| |
|
|
| |
llvm-svn: 125987
|
| |
|
|
| |
llvm-svn: 125986
|
| |
|
|
|
|
|
|
| |
is only used through GEPs.
This time with a fix that avoids using invalidated DenseMap iterator.
llvm-svn: 125984
|
| |
|
|
|
|
|
|
| |
before splitting.
All new virtual registers created for spilling or splitting point back to their original.
llvm-svn: 125980
|
| |
|
|
|
|
| |
-disable-simplifylibcalls flag.
llvm-svn: 125978
|
| |
|
|
|
|
| |
to hack on memset, memcpy etc.
llvm-svn: 125974
|
| |
|
|
| |
llvm-svn: 125968
|
| |
|
|
|
|
|
|
|
|
| |
The rewriter works almost identically to -rewriter=trivial, except it also
eliminates any identity copies.
This makes the new register allocators independent of VirtRegRewriter.cpp which
will be going away at the same time as RegAllocLinearScan.
llvm-svn: 125967
|
| |
|
|
|
|
|
|
| |
query about available library functions. For now this just has
memset_pattern16, which exists on darwin, but it can be extended for a
bunch of other things in the future.
llvm-svn: 125965
|
| |
|
|
| |
llvm-svn: 125960
|
| |
|
|
| |
llvm-svn: 125949
|
| |
|
|
|
|
| |
testcases for the disassembler to make sure it still works for "msr".
llvm-svn: 125948
|
| |
|
|
| |
llvm-svn: 125943
|
| |
|
|
| |
llvm-svn: 125845
|
| |
|
|
|
|
| |
overflow. These subsume some existing equality transforms, so zap those.
llvm-svn: 125843
|
| |
|
|
| |
llvm-svn: 125832
|
| |
|
|
| |
llvm-svn: 125830
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
taken (and used!). This prevents merging the blocks (invalidating
the block addresses) in a case like this:
#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
void foo() {
printf("%p\n", _THIS_IP_);
printf("%p\n", _THIS_IP_);
printf("%p\n", _THIS_IP_);
}
which fixes PR4151.
llvm-svn: 125829
|
| |
|
|
| |
llvm-svn: 125828
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is part of a futile attempt to not "break" bizzaro
code like this:
l1:
printf("l1: %p\n", &&l1);
++x;
if( x < 3 ) goto l1;
Previously we'd fold &&l1 to 1, which is fine per our semantics
but not helpful to the user.
llvm-svn: 125827
|
| |
|
|
| |
llvm-svn: 125805
|
| |
|
|
| |
llvm-svn: 125804
|
| |
|
|
| |
llvm-svn: 125802
|
| |
|
|
|
|
| |
Validate encoding of leave in 64bit mode.
llvm-svn: 125795
|
| |
|
|
|
|
| |
is only used through GEPs.
llvm-svn: 125794
|
| |
|
|
|
|
| |
common operations through a phi.
llvm-svn: 125790
|
| |
|
|
| |
llvm-svn: 125789
|
| |
|
|
| |
llvm-svn: 125787
|
| |
|
|
|
|
| |
result inbounds if all of the inputs are inbounds.
llvm-svn: 125785
|
| |
|
|
|
|
|
| |
Add getAllOnesValue of FP numbers to Constants and APFloat.
Add more tests.
llvm-svn: 125776
|
| |
|
|
| |
llvm-svn: 125774
|
| |
|
|
|
|
|
|
|
|
|
|
| |
(LLVMX86Utils.a) to break cyclic library dependencies between
LLVMX86CodeGen.a and LLVMX86AsmParser.a. Previously this code was in
a header file and marked static but AVX requires some additional
functionality here that won't be used by all clients. Since including
unused static functions causes a gcc compiler warning, keeping it as a
header would break builds that use -Werror. Putting this in its own
library solves both problems at once.
llvm-svn: 125765
|
| |
|
|
|
|
|
|
| |
A local live range is live in a single basic block. If such a range fails to
allocate, try to find a sub-range that would get a larger spill weight than its
interference.
llvm-svn: 125764
|
| |
|
|
|
|
| |
these patterns.
llvm-svn: 125759
|
| |
|
|
|
|
|
|
|
| |
the time but presumably my email got lost). Examples where the previous logic
got it wrong: (1) a signed i8 multiply of 64 by 2 overflows, but the high part is
zero; (2) a signed i8 multiple of -128 by 2 overflows, but the high part is all
ones.
llvm-svn: 125748
|
| |
|
|
|
|
| |
No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. In llvm side, i686 and x64 can be treated as similar way.
llvm-svn: 125747
|