Bob Wilson
1cf44c8225
Add a new virtual EmitStartOfAsmFile method to the AsmPrinter and use this
...
to emit target-specific things at the beginning of the asm output. This
fixes a problem for PPC, where the text sections are not being kept together
as expected. The base class doInitialization code calls DW->BeginModule()
which emits a bunch of DWARF section directives. The PPC doInitialization
code then emits all the TEXT section directives, with the intention that they
will be kept together. But as I understand it, the Darwin assembler treats
the default TEXT section as a special case and moves it to the beginning of
the file, which means that all those DWARF sections are in the middle of
the text. With this change, the EmitStartOfAsmFile hook is called before
the DWARF section directives are emitted, so that all the PPC text section
directives come out right at the beginning of the file.
llvm-svn: 83176
2009-09-30 22:06:26 +00:00
Bob Wilson
59eb323058
Fix a comment typo.
...
llvm-svn: 83174
2009-09-30 21:44:42 +00:00
Devang Patel
43ce9e3e75
Check for null MDNode element while printing comment.
...
llvm-svn: 83172
2009-09-30 21:26:51 +00:00
Bob Wilson
44b5a5a58c
Fix a comment.
...
llvm-svn: 83171
2009-09-30 21:26:13 +00:00
Bob Wilson
233aa46c87
The AsmPrinter base class contains a DwarfWriter member, so there's no need
...
for derived AsmPrinters to add another one. In some cases, fixing this
removes the need to override the doInitialization method.
llvm-svn: 83170
2009-09-30 21:24:45 +00:00
Jeffrey Yasskin
2d4f3f6704
Assert that ConstantArrays are created with correctly-typed elements.
...
llvm-svn: 83168
2009-09-30 21:08:08 +00:00
Dan Gohman
2ecc146f0c
Fix this code so that it doesn't try to iterate through a std::vector
...
while calling changeImmediateDominator, which removes elements from the
vector. This fixes PR5097.
llvm-svn: 83166
2009-09-30 20:54:16 +00:00
Reid Kleckner
4c0732ea64
Silence comparison always false warning in -Asserts mode.
...
llvm-svn: 83164
2009-09-30 20:43:07 +00:00
Jim Grosbach
b4fdc9252d
Add additional assert() to verify no extraneous use of a scavenged register.
...
llvm-svn: 83163
2009-09-30 20:35:36 +00:00
Devang Patel
24270e88cc
Print tag name for MDNodes that are used to encode debug info.
...
llvm-svn: 83160
2009-09-30 20:16:54 +00:00
Reid Kleckner
ffe2b97d7a
Fix integer overflow in instruction scheduling. This can happen if we have
...
basic blocks that are so long that their size overflows a short.
Also assert that overflow does not happen in the future, as requested by Evan.
This fixes PR4401.
llvm-svn: 83159
2009-09-30 20:15:38 +00:00
Devang Patel
5d5d1f31b7
Silence unused variable warning.
...
llvm-svn: 83151
2009-09-30 17:13:41 +00:00
Jim Grosbach
2c211c7bfe
Clarify comment phrasing.
...
llvm-svn: 83148
2009-09-30 15:23:38 +00:00
Evan Cheng
86bd5c3ae1
Add a option which would move ld/st multiple pass before post-alloc scheduling.
...
llvm-svn: 83145
2009-09-30 08:53:01 +00:00
Evan Cheng
bb0561f2dd
Add a target hook to add pre- post-regalloc scheduling passes.
...
llvm-svn: 83144
2009-09-30 08:49:50 +00:00
Evan Cheng
a335221976
Forgot this test earlier.
...
llvm-svn: 83143
2009-09-30 08:41:27 +00:00
Chris Lattner
0731e5bc62
add macruby, fix a validation problem.
...
llvm-svn: 83142
2009-09-30 06:27:22 +00:00
Nick Lewycky
a44b8327fb
Fix compile error as debug interface changed.
...
By the way, this code is buggy. You can't keep a map<MDNode *, something>
because the MDNode may be destroyed and reused for something else.
llvm-svn: 83141
2009-09-30 04:50:26 +00:00
Jim Grosbach
d885068ad4
replace TRI->isVirtualRegister() with TargetRegisterInfo::isVirtualRegister()
...
per customary usage
llvm-svn: 83137
2009-09-30 01:47:59 +00:00
Jim Grosbach
9655673c95
When checking whether we need to reserve a register for the scavenger,
...
the size of the saved frame pointer needs to be taken into account.
llvm-svn: 83136
2009-09-30 01:43:29 +00:00
Jim Grosbach
2d057f09e8
Add "isBarrier = 1" to return instructions.
...
Patch by Sylvere Teissier.
llvm-svn: 83135
2009-09-30 01:35:11 +00:00
Jim Grosbach
5cc33f7dac
fix compiler warning
...
llvm-svn: 83132
2009-09-30 00:37:40 +00:00
David Goodwin
e4de749689
Remove regression that requires post-RA scheduling from a target that does not use that scheduler.
...
llvm-svn: 83128
2009-09-30 00:23:57 +00:00
Bob Wilson
48f9855607
For Darwin, emit all the text section directives together before the dwarf
...
section directives. This causes the assembler to put the text sections at
the beginning of the object file, which helps work around a limitation of the
Darwin ARM relocations. Radar 7255355.
llvm-svn: 83127
2009-09-30 00:23:42 +00:00
Devang Patel
0136a7ebec
Simplify.
...
llvm-svn: 83123
2009-09-30 00:14:40 +00:00
David Goodwin
a282690f82
Remove -post-RA-schedule flag and add a TargetSubtarget method to enable post-register-allocation scheduling. By default it is off. For ARM, enable/disable with -mattr=+/-postrasched. Enable by default for cortex-a8.
...
llvm-svn: 83122
2009-09-30 00:10:16 +00:00
Douglas Gregor
66fc2ea1c2
Forward-declare ValueSymbolTable so that SymbolTableListTraits.h can be parsed by itself
...
llvm-svn: 83121
2009-09-30 00:08:25 +00:00
Mike Stump
a3bce35a07
Add a way for a frontend to generate more complex dwarf location
...
information. This allows arbitrary code involving DW_OP_plus_uconst
and DW_OP_deref. The scheme allows for easy extention to include,
any, or all of the DW_OP_ opcodes. I thought about just exposing all
of them, but, wasn't sure if people wanted the dwarf opcodes exposed
in the api. Is that a layering violation?
With this scheme, the entire existing block scheme used by llvm-gcc
can be switched over to the new scheme. I think that would be
cleaner, as then the compiler specific bits are not present in llvm
proper. Before the old code can be yanked however, similar code in
clang would have to be removed.
Next up, more testing.
llvm-svn: 83120
2009-09-30 00:08:22 +00:00
Jim Grosbach
278d0d5b3d
minor cleanup and add clarifying comment
...
llvm-svn: 83117
2009-09-29 23:17:20 +00:00
Devang Patel
c1e370a29c
Lookup handler name only when assertions are enabled.
...
llvm-svn: 83114
2009-09-29 22:05:52 +00:00
Devang Patel
39b5b72d74
Add removeMD().
...
llvm-svn: 83107
2009-09-29 20:42:25 +00:00
Devang Patel
292bcd8ca1
Only one custom meadata of each kind can be attached with an instruction.
...
llvm-svn: 83105
2009-09-29 20:30:57 +00:00
Jim Grosbach
f759d3c1c5
Additional check for regno==0
...
llvm-svn: 83103
2009-09-29 20:11:10 +00:00
Devang Patel
351585921d
Use assertion instead of early exit to catch malformed custom metadata store.
...
llvm-svn: 83102
2009-09-29 20:01:19 +00:00
Devang Patel
5dcd8e1d86
Remove unnecessary cast.
...
llvm-svn: 83100
2009-09-29 19:56:13 +00:00
Devang Patel
e5be8e79df
Remove std::string uses from DebugInfo interface.
...
llvm-svn: 83083
2009-09-29 18:40:58 +00:00
Devang Patel
5cad2b8f0f
Create empty StringRef is incoming cstring is NULL.
...
llvm-svn: 83082
2009-09-29 18:39:56 +00:00
Jim Grosbach
0e6ac9047c
Simplify the tracking of virtual frame index registers. Ranges cannot overlap,
...
so a simple "current register" will suffice. Also add some additional
sanity-checking assertions to make sure things are as we expect.
llvm-svn: 83081
2009-09-29 18:23:15 +00:00
Jim Grosbach
6f6bc51d3b
Moving register scavenging to a post pass results in virtual registers in
...
the instruction we're scavenging for. The scavenger needs to know to avoid
them when analyzing register usage.
llvm-svn: 83077
2009-09-29 17:24:37 +00:00
David Goodwin
34aa421e3a
Post-RA regressions.
...
llvm-svn: 83075
2009-09-29 17:10:26 +00:00
Evan Cheng
d2bf81c7af
Fix PR4687. Pre ARMv5te does not support ldrd / strd. Patch by John Tytgat.
...
llvm-svn: 83058
2009-09-29 07:07:30 +00:00
Nick Lewycky
e41779dc58
Regenerate.
...
llvm-svn: 83052
2009-09-29 06:18:23 +00:00
Nick Lewycky
f269c667b1
Fix configure bug that only shows up in a clean build. Don't try to invoke gcc
...
until after the compiler itself has been set up.
llvm-svn: 83051
2009-09-29 06:18:00 +00:00
Nick Lewycky
b85f2baf3f
Roll back r83048.
...
llvm-svn: 83050
2009-09-29 05:48:51 +00:00
Nick Lewycky
c43baa1c55
Regenerate.
...
llvm-svn: 83048
2009-09-29 05:41:21 +00:00
Nick Lewycky
a2401a5692
On Linux, uname -m reports the kernel type. Some Linux systems are 32-bit but
...
with a 64-bit kernel, which confuses LLVM. Make LLVM double-check this by
checking which defines the system gcc actually sets.
llvm-svn: 83047
2009-09-29 05:40:45 +00:00
Devang Patel
629ad89954
Parse custom metadata attached with an instruction.
...
llvm-svn: 83033
2009-09-29 00:01:14 +00:00
Stuart Hastings
3843d7f06d
B&I's buildit forces a PATH that omits /Developer. Temporarily add
...
/Developer/usr/bin to the PATH when looking for llvm-gcc.
llvm-svn: 83028
2009-09-28 23:42:38 +00:00
Stuart Hastings
5de4dcc406
For B&I-style builds, tweak build_llvm script to prefer LLVM-G++ if
...
available. Override by setting CC and CXX in the environment.
llvm-svn: 83024
2009-09-28 22:17:53 +00:00
Jim Grosbach
9cb82ce219
Adjust processFunctionBeforeCalleeSavedScan() to correctly reserve a stack
...
slot for the register scavenger when compiling Thumb1 functions.
llvm-svn: 83023
2009-09-28 22:08:06 +00:00