| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in local register allocator. If a reg-reg copy has a phys reg
input and a virt reg output, and this is the last use of the phys
reg, assign the phys reg to the virt reg. If a reg-reg copy has
a phys reg output and we need to reload its spilled input, reload
it directly into the phys reg than passing it through another reg.
Following 76208, there is sometimes no dependency between the def of
a phys reg and its use; this creates a window where that phys reg
can be used for spilling (this is true in linear scan also). This
is bad and needs to be fixed a better way, although 76208 works too
well in practice to be reverted. However, there should normally be
no spilling within inline asm blocks. The patch here goes a long way
towards making this actually be true.
llvm-svn: 91485
|
| |
|
|
|
|
| |
implicit operands on copies.
llvm-svn: 89880
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This violates the ABI (that area is "reserved"), and
while it is safe if all code is generated with current
compilers, there is some very old code around that uses
that slot for something else, and breaks if it is stored
into. Adjust testcases looking for current behavior.
I've verified that the stack frame size is right in all
testcases, whether it changed or not. 7311323.
llvm-svn: 89811
|
| |
|
|
| |
llvm-svn: 89586
|
| |
|
|
| |
llvm-svn: 89584
|
| |
|
|
|
|
|
| |
and stores, handle the case where the element size is not
a valid target type correctly (PPC).
llvm-svn: 89521
|
| |
|
|
|
|
| |
(PPC specific).
llvm-svn: 89496
|
| |
|
|
| |
llvm-svn: 88899
|
| |
|
|
| |
llvm-svn: 88895
|
| |
|
|
|
|
| |
PPC is such a target; make it work.
llvm-svn: 87060
|
| |
|
|
| |
llvm-svn: 86786
|
| |
|
|
| |
llvm-svn: 86752
|
| |
|
|
|
|
|
|
|
| |
constant whose component type is not a legal type for the target.
(If the target ConstantPool cannot handle this type either, it has
an opportunity to merge elements. In practice any target with
8-bit bytes must support i8 *as data*). 7320806 (partial).
llvm-svn: 86751
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
generates a sequence similar to this:
__Z4funci:
LFB2:
mflr r0
LCFI0:
stmw r30,-8(r1)
LCFI1:
stw r0,8(r1)
LCFI2:
stwu r1,-80(r1)
LCFI3:
mr r30,r1
LCFI4:
where LCFI3 and LCFI4 are used by the FDE to indicate what the FP, LR, and other
things are. We generated something more like this:
Leh_func_begin1:
mflr r0
stw r31, 20(r1)
stw r0, 8(r1)
Llabel1:
stwu r1, -80(r1)
Llabel2:
mr r31, r1
Note that we are missing the "mr" instruction. This patch makes it more like the
GCC output.
llvm-svn: 86729
|
| |
|
|
| |
llvm-svn: 86192
|
| |
|
|
| |
llvm-svn: 86086
|
| |
|
|
| |
llvm-svn: 86050
|
| |
|
|
| |
llvm-svn: 82708
|
| |
|
|
|
|
|
| |
move a SUBFC (etc.) below the SUBFE (etc.) that consumed
the carry bit. Add missing ADDIC8, noticed along the way.
llvm-svn: 82266
|
| |
|
|
| |
llvm-svn: 81545
|
| |
|
|
|
|
|
|
| |
input filename so that opt doesn't print the input filename in the
output so that grep lines in the tests don't unintentionally match
strings in the input filename.
llvm-svn: 81537
|
| |
|
|
| |
llvm-svn: 81293
|
| |
|
|
|
|
| |
of using llvm-as, now that opt supports this.
llvm-svn: 81226
|
| |
|
|
| |
llvm-svn: 80119
|
| |
|
|
| |
llvm-svn: 80031
|
| |
|
|
| |
llvm-svn: 80029
|
| |
|
|
| |
llvm-svn: 79992
|
| |
|
|
| |
llvm-svn: 79933
|
| |
|
|
| |
llvm-svn: 79926
|
| |
|
|
| |
llvm-svn: 79856
|
| |
|
|
|
|
| |
problem is fixed by the TableGen determinism fix.
llvm-svn: 79851
|
| |
|
|
|
|
|
|
|
| |
for a single "m" constraint; this is wrong because the
opcode of a load or store would have to change in parallel.
This patch makes it always compute addresses into a register,
which is correct but not as efficient as possible. 7144566.
llvm-svn: 79292
|
| |
|
|
|
|
| |
must be emitted for PowerPC-Linux '.bss' section
llvm-svn: 78958
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
x86_64-apple-darwin10.
--- Reverse-merging r78895 into '.':
U test/CodeGen/PowerPC/2008-12-12-EH.ll
U lib/Target/DarwinTargetAsmInfo.cpp
--- Reverse-merging r78892 into '.':
U include/llvm/Target/DarwinTargetAsmInfo.h
U lib/Target/X86/X86TargetAsmInfo.cpp
U lib/Target/X86/X86TargetAsmInfo.h
U lib/Target/ARM/ARMTargetAsmInfo.h
U lib/Target/ARM/ARMTargetMachine.cpp
U lib/Target/ARM/ARMTargetAsmInfo.cpp
U lib/Target/PowerPC/PPCTargetAsmInfo.cpp
U lib/Target/PowerPC/PPCTargetAsmInfo.h
U lib/Target/PowerPC/PPCTargetMachine.cpp
G lib/Target/DarwinTargetAsmInfo.cpp
llvm-svn: 78919
|
| |
|
|
| |
llvm-svn: 78895
|
| |
|
|
| |
llvm-svn: 78791
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instead of syntactically as a string. This means that it keeps track of the
segment, section, flags, etc directly and asmprints them in the right format.
This also includes parsing and validation support for llvm-mc and
"attribute(section)", so we should now start getting errors about invalid
section attributes from the compiler instead of the assembler on darwin.
Still todo:
1) Uniquing of darwin mcsections
2) Move all the Darwin stuff out to MCSectionMachO.[cpp|h]
3) there are a few FIXMEs, for example what is the syntax to get the
S_GB_ZEROFILL segment type?
llvm-svn: 78547
|
| |
|
|
| |
llvm-svn: 76823
|
| |
|
|
| |
llvm-svn: 76805
|
| |
|
|
|
|
|
|
|
|
|
| |
operands.
The inline asm operands must be parsed from the first flag, you cannot assume
that an immediate operand preceeding a register use operand is the flag.
PowerPC "m" operands are represented as (flag, imm, reg) triples.
isRegTiedToDefOperand() would incorrectly interpret the imm as the flag.
llvm-svn: 76101
|
| |
|
|
|
|
|
| |
using horrible string hacking. This gives us a different label,
but it's just an assembler temporary, so the name doesn't matter.
llvm-svn: 75733
|
| |
|
|
|
|
| |
extremely elaborate pic/nopic stubs.
llvm-svn: 75726
|
| |
|
|
| |
llvm-svn: 75725
|
| |
|
|
| |
llvm-svn: 75663
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
additional bug fixes:
1. The bug that everyone hit was a problem in the asmprinter where it
would remove $stub but keep the L prefix on a name when emitting the
indirect symbol. This is easy to fix by keeping the name of the stub
and the name of the symbol in a StringMap instead of just keeping a
StringSet and trying to reconstruct it late.
2. There was a problem printing the personality function. The current
logic to print out the personality function from the DWARF information
is a bit of a cesspool right now that duplicates a bunch of other
logic in the asm printer. The short version of it is that it depends
on emitting both the L and _ prefix for symbols (at least on darwin)
and until I can untangle it, it is best to switch the mangler back to
emitting both prefixes.
llvm-svn: 75646
|
| |
|
|
|
|
|
|
|
|
|
|
| |
indicates whether the label is private or not, instead of taking
prefix stuff. One effect of this is that symbols will be generated
with *just* the private prefix, instead of both the private prefix
*and* the user-label-prefix, but this doesn't matter as long as it
is consistent. For example we'll now get "Lfoo" instead of "L_foo".
These are just assembler temporary labels anyway, so they never even
make it into the .o file.
llvm-svn: 75607
|
| |
|
|
| |
llvm-svn: 75544
|
| |
|
|
| |
llvm-svn: 75533
|
| |
|
|
|
|
| |
PR4482.
llvm-svn: 74613
|
| |
|
|
| |
llvm-svn: 74211
|