| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 126203
|
| |
|
|
| |
llvm-svn: 126202
|
| |
|
|
| |
llvm-svn: 126201
|
| |
|
|
| |
llvm-svn: 126200
|
| |
|
|
| |
llvm-svn: 126199
|
| |
|
|
| |
llvm-svn: 126198
|
| |
|
|
| |
llvm-svn: 126197
|
| |
|
|
| |
llvm-svn: 126196
|
| |
|
|
|
|
| |
PR8311.
llvm-svn: 126195
|
| |
|
|
|
|
| |
Redzone is not applicable on Win64.
llvm-svn: 126194
|
| |
|
|
|
|
| |
rdar://9027648.
llvm-svn: 126191
|
| |
|
|
|
|
|
| |
Apparently it's ok for multiple operands to "kill" the same register.
Fixes PR9237.
llvm-svn: 126190
|
| |
|
|
| |
llvm-svn: 126185
|
| |
|
|
|
|
|
| |
fixed in r126147, where a field in the X86 decode
structure was being read as bits, not bytes.
llvm-svn: 126182
|
| |
|
|
|
|
|
| |
edis name as needing expansion. This tool was
been replaced by llvm-mc long ago.
llvm-svn: 126180
|
| |
|
|
|
|
|
|
|
| |
registers
at phis. This enables us to eliminate a lot of pointless zexts during the DAGCombine
phase. This fixes <rdar://problem/8760114>.
llvm-svn: 126170
|
| |
|
|
|
|
| |
From Dimitry Andric.
llvm-svn: 126168
|
| |
|
|
|
|
| |
Patch by Jai Menon.
llvm-svn: 126165
|
| |
|
|
| |
llvm-svn: 126163
|
| |
|
|
| |
llvm-svn: 126157
|
| |
|
|
|
|
|
|
|
|
|
| |
LiveIns."
In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body.
This requires some coordination with debugger to get this working.
- The debugger needs to be aware of prolog_end attribute attached with line table entries.
- The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+)
llvm-svn: 126155
|
| |
|
|
| |
llvm-svn: 126132
|
| |
|
|
| |
llvm-svn: 126131
|
| |
|
|
|
|
|
| |
"dllimport" function must not be GlobalVariable, but Function. It is enough to check with GlobalValue.
test/CodeGen/X86/dll-linkage.ll is updated to check llc -O0.
llvm-svn: 126110
|
| |
|
|
| |
llvm-svn: 126108
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
approximation
of a constant had a minor typo introduced when copying it from the book, which
caused it to favor negative approximations over positive approximations in many
cases. Positive approximations require fewer operations beyond the multiplication.
In the case of division by 3, we still generate code that is a single instruction
larger than GCC's code.
llvm-svn: 126097
|
| |
|
|
|
|
| |
Requires CMake 2.8.3 or newer.
llvm-svn: 126092
|
| |
|
|
|
|
| |
PR9245.
llvm-svn: 126091
|
| |
|
|
|
|
|
|
|
| |
test for that. With this change, test/CodeGen/X86/codegen-dce.ll no longer finds
any instructions to DCE, so delete the test.
Also renamed J and JP to I and IP in RecursivelyDeleteDeadPHINode.
llvm-svn: 126088
|
| |
|
|
|
|
|
|
|
| |
We usually catch this kind of optimization through InstSimplify's distributive
magic, but or doesn't distribute over xor in general.
"A | ~(A | B) -> A | ~B" hits 24 times on gcc.c.
llvm-svn: 126081
|
| |
|
|
|
|
|
|
| |
The DAGCombiner folds the zext into complex load instructions. This patch
prevents this optimization on vectors since none of the supported targets
knows how to perform load+vector_zext in one instruction.
llvm-svn: 126080
|
| |
|
|
|
|
| |
by Andrew Clinton!
llvm-svn: 126077
|
| |
|
|
|
|
|
| |
the instruction passed in. Make sure to account for this correctly, instead
of looping infinitely.
llvm-svn: 126058
|
| |
|
|
|
|
|
| |
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: 126008
|
| |
|
|
|
|
|
|
| |
is only used through GEPs.
This time with a fix that avoids using invalidated DenseMap iterator.
llvm-svn: 125984
|
| |
|
|
| |
llvm-svn: 125960
|
| |
|
|
|
|
| |
testcases for the disassembler to make sure it still works for "msr".
llvm-svn: 125948
|
| |
|
|
|
|
| |
overflow. These subsume some existing equality transforms, so zap those.
llvm-svn: 125843
|
| |
|
|
| |
llvm-svn: 125831
|
| |
|
|
| |
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: 125805
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
result inbounds if all of the inputs are inbounds.
llvm-svn: 125785
|