| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 17053
|
| |
|
|
| |
llvm-svn: 17052
|
| |
|
|
| |
llvm-svn: 17051
|
| |
|
|
| |
llvm-svn: 17050
|
| |
|
|
|
|
|
|
| |
now compile:
'foo() {}' into "ret" instead of "mov EAX, 0; ret"
llvm-svn: 17049
|
| |
|
|
| |
llvm-svn: 17048
|
| |
|
|
| |
llvm-svn: 17047
|
| |
|
|
| |
llvm-svn: 17046
|
| |
|
|
| |
llvm-svn: 17045
|
| |
|
|
|
|
| |
ignore unreachable instructions
llvm-svn: 17044
|
| |
|
|
| |
llvm-svn: 17043
|
| |
|
|
|
|
|
| |
that are initialized with undef. When promoting malloc to a global, start out
initialized to undef
llvm-svn: 17042
|
| |
|
|
| |
llvm-svn: 17041
|
| |
|
|
| |
llvm-svn: 17040
|
| |
|
|
| |
llvm-svn: 17031
|
| |
|
|
| |
llvm-svn: 17030
|
| |
|
|
| |
llvm-svn: 17029
|
| |
|
|
|
|
|
| |
that the vtables for these classes are only instantiated in this translation
unit, not in every xlation unit they are used.
llvm-svn: 17026
|
| |
|
|
| |
llvm-svn: 17023
|
| |
|
|
| |
llvm-svn: 17022
|
| |
|
|
| |
llvm-svn: 17017
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
case:
int C[100];
int foo() {
return C[4];
}
We now codegen:
foo:
mov %EAX, DWORD PTR [C + 16]
ret
instead of:
foo:
mov %EAX, OFFSET C
mov %EAX, DWORD PTR [%EAX + 16]
ret
Other impressive features may be coming later.
This patch is contributed by Jeff Cohen!
llvm-svn: 17011
|
| |
|
|
|
|
| |
contributed by Jeff Cohen!
llvm-svn: 17010
|
| |
|
|
|
|
| |
constant displacements from global variables. Patch by Jeff Cohen!
llvm-svn: 17009
|
| |
|
|
|
|
| |
by Jeff Cohen!
llvm-svn: 17008
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
useful when you have a reference like:
int A[100];
void foo() { A[10] = 1; }
In this case, &A[10] is a single constant and should be treated as such.
Only MO_GlobalAddress and MO_ExternalSymbol are allowed to use this field, no
other operand type is.
This is another fine patch contributed by Jeff Cohen!!
llvm-svn: 17007
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The problem occurred when trying to reload this instruction:
MOV32mr %reg2326, 8, %reg2297, 4, %reg2295
The value of reg2326 was available in EBX, so it was reused from there, instead
of reloading it into EDX.
The value of reg2297 was available in EDX, so it was reused from there, instead
of reloading it into EDI.
The value of reg2295 was not available, so we tried reloading it into EBX, its
assigned register. However, we checked and saw that we already reloaded
something into EBX, so we chose what reg2326 was assigned to (EDX) and reloaded
into that register instead.
Unfortunately EDX had already been used by reg2297, so reloading into EDX
clobbered the value used by the reg2326 operand, breaking the program.
The fix for this is to check that the newly picked register is ok. In this
case we now find that EDX is already used and try using EDI, which succeeds.
llvm-svn: 17006
|
| |
|
|
| |
llvm-svn: 17005
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This transformation fires a few dozen times across the testsuite.
For example, int test2(int X) { return X ^ 0x0FF00FF0; }
Old:
_test2:
lis r2, 4080
ori r2, r2, 4080
xor r3, r3, r2
blr
New:
_test2:
xoris r3, r3, 4080
xori r3, r3, 4080
blr
llvm-svn: 17004
|
| |
|
|
| |
llvm-svn: 17003
|
| |
|
|
| |
llvm-svn: 17002
|
| |
|
|
| |
llvm-svn: 17001
|
| |
|
|
| |
llvm-svn: 17000
|
| |
|
|
|
|
| |
* In the F3_3 class, remove mention of asi because it's not part of the format
llvm-svn: 16999
|
| |
|
|
|
|
| |
weak functions. Thanks for finding this John!
llvm-svn: 16997
|
| |
|
|
| |
llvm-svn: 16996
|
| |
|
|
|
|
| |
adding emitFPToIntegerCast.
llvm-svn: 16995
|
| |
|
|
|
|
|
| |
Update list of currently failing tests.
ADJCALLSTACK* support is done.
llvm-svn: 16994
|
| |
|
|
|
|
| |
Patch by Morten Ofstad
llvm-svn: 16987
|
| |
|
|
|
|
|
| |
same scope. This confused VC++ (and probably people too!). Patch by
Morten Ofstad!
llvm-svn: 16985
|
| |
|
|
|
|
|
|
|
| |
addPassesToEmitMachineCode()
* Add support for registers and constants in getMachineOpValue()
This enables running "int main() { ret 0 }" via the PowerPC JIT.
llvm-svn: 16983
|
| |
|
|
|
|
|
|
|
| |
* Add implementation of getMachineOpValue() for generated code emitter
* Convert assert()s in unimplemented functions to abort()s so that non-debug
builds fail predictably
* Add file header comments
llvm-svn: 16981
|
| |
|
|
|
|
|
|
|
|
| |
and 64-bit code emitters that cannot share code unless we use virtual
functions
* Identify components being built by tablegen with more detail by assigning them
to PowerPC, PPC32, or PPC64 more specifically; also avoids seeing 'building
PowerPC XYZ' messages twice, where one is for PPC32 and one for PPC64
llvm-svn: 16980
|
| |
|
|
|
|
| |
a bug with branches that I need to fix.
llvm-svn: 16979
|
| |
|
|
|
|
|
| |
the instruction binary format, all others are simply operands and should not
have the `field' label
llvm-svn: 16978
|
| |
|
|
| |
llvm-svn: 16977
|
| |
|
|
| |
llvm-svn: 16976
|
| |
|
|
|
|
|
|
| |
nodes unless we KNOW that we are able to promote all of them.
This fixes: test/Regression/Transforms/SimplifyCFG/PhiNoEliminate.ll
llvm-svn: 16973
|
| |
|
|
| |
llvm-svn: 16971
|
| |
|
|
| |
llvm-svn: 16970
|