Bruno Cardoso Lopes
bd4ae81317
Remove getFunctionAlignment from TargetELFInfo and use new MachineFunction alignment method
...
llvm-svn: 74686
2009-07-02 02:13:13 +00:00
Devang Patel
735f7d53ca
Simplify.
...
llvm-svn: 74677
2009-07-02 00:28:03 +00:00
Devang Patel
2e373cdc9f
Simplify. No intentional functionality change.
...
llvm-svn: 74673
2009-07-02 00:08:09 +00:00
Devang Patel
1fececd8c1
Refactor. No functionality change.
...
llvm-svn: 74659
2009-07-01 23:19:01 +00:00
Devang Patel
9149c185a4
llvm.dbg.declare is always used for local variable's debug info.
...
llvm-svn: 74625
2009-07-01 18:51:07 +00:00
Evan Cheng
e6989735a6
CommuteChangesDestination() should check if to-be-commuted instruction defines any register. Also teaches the default commuteInstruction() to commute instruction without definitions (e.g. X86::test / ARM::tsp).
...
llvm-svn: 74602
2009-07-01 08:29:08 +00:00
Evan Cheng
7d78cb531e
Remove special handling of implicit_def. Fix a couple more bugs in liveintervalanalysis and coalescer handling of implicit_def.
...
Note, isUndef marker must be placed even on implicit_def def operand or else the scavenger will not ignore it. This is necessary because -O0 path does not use liveintervalanalysis, it treats implicit_def just like any other def.
llvm-svn: 74601
2009-07-01 08:19:36 +00:00
Evan Cheng
37503e9671
Handle IMPLICIT_DEF with isUndef operand marker, part 2. This patch moves the code to annotate machineoperands to LiveIntervalAnalysis. It also add markers for implicit_def that define physical registers. The rest, is just a lot of details.
...
llvm-svn: 74580
2009-07-01 01:59:31 +00:00
Daniel Dunbar
bc3d149e98
Remove unused AsmPrinter OptLevel argument, and propogate.
...
- This more or less amounts to a revert of r65379. I'm curious to know what
happened that caused this variable to become unused.
llvm-svn: 74579
2009-07-01 01:48:54 +00:00
Bill Wendling
c0fb316bd3
Add an "alignment" field to the MachineFunction object. It makes more sense to
...
have the alignment be calculated up front, and have the back-ends obey whatever
alignment is decided upon.
This allows for future work that would allow for precise no-op placement and the
like.
llvm-svn: 74564
2009-06-30 22:38:32 +00:00
Evan Cheng
28b9e77f19
Temporarily restore the scavenger implicit_def checking code. MachineOperand isUndef mark is not being put on implicit_def of physical registers (created for parameter passing, etc.).
...
llvm-svn: 74519
2009-06-30 09:19:42 +00:00
Evan Cheng
c6c942b70f
Add a bit IsUndef to MachineOperand. This indicates the def / use register operand is defined by an implicit_def. That means it can def / use any register and passes (e.g. register scavenger) can feel free to ignore them.
...
The register allocator, when it allocates a register to a virtual register defined by an implicit_def, can allocate any physical register without worrying about overlapping live ranges. It should mark all of operands of the said virtual register so later passes will do the right thing.
This is not the best solution. But it should be a lot less fragile to having the scavenger try to track what is defined by implicit_def.
llvm-svn: 74518
2009-06-30 08:49:04 +00:00
Devang Patel
e35cd91347
Struct types are described using field types only.
...
llvm-svn: 74477
2009-06-29 23:46:50 +00:00
Devang Patel
bff451b95b
s/MainCU/ModuleCU/g
...
llvm-svn: 74452
2009-06-29 20:45:18 +00:00
Devang Patel
4ba8cbff55
Multiple DW_TAG_compile_unit is not used, afaict, on any target.
...
Update dwarf writer to only emit one DW_TAG_compile_unit per .o file.
llvm-svn: 74449
2009-06-29 20:38:13 +00:00
Dan Gohman
e25e17d91e
Eliminate a layer of indirection in LoopInfo and MachineLoopInfo.
...
llvm-svn: 74394
2009-06-27 21:22:48 +00:00
Chris Lattner
0ce83b0e95
When doing remat, don't consider uses of non-allocatable physregs. Patch
...
by Evan.
llvm-svn: 74370
2009-06-27 04:06:41 +00:00
Chris Lattner
ce7f3c052e
fix a typo that GCC should have caught that causes crashes with -view-*-dags
...
llvm-svn: 74364
2009-06-27 00:57:02 +00:00
Chris Lattner
ca9aefcc93
fix a really subtle bug in the cross section of aliases and TLS:
...
the SelectionDAG::getGlobalAddress function properly looks through
aliases to determine thread-localness, but then passes the GV* down
to GlobalAddressSDNode::GlobalAddressSDNode which does not. Instead
of passing down isTarget, just pass down the predetermined node
opcode. This fixes some assertions with out of tree changes I'm
working on.
llvm-svn: 74325
2009-06-26 21:14:05 +00:00
Owen Anderson
0cf6b34d5d
Get rid of these cache variables, which are a holdover from the days when
...
we had multiple type planes and these lookups were expensive.
llvm-svn: 74319
2009-06-26 20:33:47 +00:00
Chris Lattner
0fee902c2d
implement DOTGraphTraits<SelectionDAG*>::getNodeLabel in terms of
...
SDNode::print_details to eliminate a ton of near-duplicate code.
llvm-svn: 74311
2009-06-26 19:06:10 +00:00
Douglas Gregor
6d9b0e8c19
Fix linking of llvm-ld and lli with CMake, from Xerxes Rånby
...
llvm-svn: 74285
2009-06-26 15:37:00 +00:00
Chris Lattner
05eabf4f95
dot graph viewing is apparently not using SDNode::print_details, this is bad,
...
but in the meantime lets print targetflags on node labels.
llvm-svn: 74274
2009-06-26 05:55:43 +00:00
Chris Lattner
3aef0c897e
propagate target operand flags from dag nodes into MachineOperands.
...
llvm-svn: 74273
2009-06-26 05:52:14 +00:00
Chris Lattner
181d139bc3
fit in 80 cols
...
llvm-svn: 74270
2009-06-26 05:39:02 +00:00
Devang Patel
84a8914a4a
Remove debug info anchors - llvm.dbg.compile_units, llvm.dbg.subprograms
...
and llvm.dbg.global_variables.
llvm-svn: 74251
2009-06-26 01:49:18 +00:00
Devang Patel
32bbebe82f
Simplify.
...
llvm-svn: 74215
2009-06-25 22:36:02 +00:00
Chris Lattner
6a77e841e8
add targetflags to jump tables and constant pool entries.
...
llvm-svn: 74204
2009-06-25 21:35:31 +00:00
Chris Lattner
f94959f1a3
allow setting target operand flags on TargetGlobalAddress nodes.
...
llvm-svn: 74203
2009-06-25 21:21:14 +00:00
Chris Lattner
55fdaaf6e7
start bringing targetoperand flags into isel, first up, ExternalSymbol.
...
llvm-svn: 74199
2009-06-25 18:45:50 +00:00
Owen Anderson
76d92148a7
Provide guards for this shared structure. I'm not sure this actually needs
...
to be shared, but how/where to privatize it is not immediately clear to me.
If any SelectionDAG experts see a better solution, please share!
llvm-svn: 74180
2009-06-25 17:09:00 +00:00
Owen Anderson
7bc2987c5c
Privatize some more debug-related static data.
...
llvm-svn: 74179
2009-06-25 16:55:32 +00:00
Bruno Cardoso Lopes
5e0be0b9a1
Support Constant Pool Sections
...
Add section symbols to the symbol table
llvm-svn: 74170
2009-06-25 07:36:24 +00:00
Bill Wendling
edfdb32218
My guess is that RegInfo should only call the Allocator.Deallocator if it's not
...
null.
llvm-svn: 74147
2009-06-25 00:32:48 +00:00
Owen Anderson
696fd9b29e
Now with EVEN FEWER statics!
...
llvm-svn: 74143
2009-06-25 00:04:15 +00:00
Owen Anderson
a21f94d6ba
Fewer static variables, part 3 of many.
...
llvm-svn: 74140
2009-06-24 23:41:44 +00:00
Owen Anderson
e194f62a43
Down with _even more_ statics!
...
llvm-svn: 74137
2009-06-24 23:13:56 +00:00
Owen Anderson
7b32a5b971
Down with statics!
...
llvm-svn: 74134
2009-06-24 22:53:20 +00:00
Owen Anderson
9832095b30
Move local statics to per-instance variables.
...
llvm-svn: 74132
2009-06-24 22:28:12 +00:00
Lang Hames
b9f524d565
Completed basic intra block split implementation.
...
llvm-svn: 74114
2009-06-24 20:46:24 +00:00
David Greene
08b3d807e8
This increases the maximum for MVT::LAST_VALUETYPE
...
This change doubles the allowable value for MVT::LAST_VALUETYPE. It does
this by doing several things.
1. Introduces MVT::MAX_ALLOWED_LAST_VALUETYPE which in this change has a
value of 64. This value contains the current maximum for the
MVT::LAST_VALUETYPE.
2. Instead of checking "MVT::LAST_VALUETYPE <= 32", all of those uses
now become "MVT::LAST_VALUETYPE <= MVT::MAX_ALLOWED_LAST_VALUETYPE"
3. Changes the dimension of the ValueTypeActions from 2 elements to four
elements and adds comments ahead of the declaration indicating the it is
"(MVT::MAX_ALLOWED_LAST_VALUETYPE/32) * 2". This at least lets us find
what is affected if and when MVT::MAX_ALLOWED_LAST_VALUETYPE gets
changed.
4. Adds initializers for the new elements of ValueTypeActions.
This does NOT add any types in MVT. That would be done separately.
This doubles the size of ValueTypeActions from 64 bits to 128 bits and
gives us the freedom to add more types for AVX.
llvm-svn: 74110
2009-06-24 19:41:55 +00:00
Chris Lattner
ee30c14d3b
sink management of DwarfWriter & MachineModuleInfo into the AsmPrinter base class.
...
llvm-svn: 74101
2009-06-24 19:09:55 +00:00
Chris Lattner
d59a5b9f8b
sink dwarf finalization out of each target into AsmPrinter::doFinalization
...
llvm-svn: 74097
2009-06-24 18:54:37 +00:00
Chris Lattner
0690755320
eliminate the ExtWeakSymbols set from AsmPrinter. This eliminates
...
a bunch of code from all the targets, and eliminates nondeterministic
ordering of directives being emitted in the output.
llvm-svn: 74096
2009-06-24 18:52:01 +00:00
Chris Lattner
cabe904f79
Rearrange some stuff in MachineOperand and add a new TargetFlags field.
...
llvm-svn: 74087
2009-06-24 17:54:48 +00:00
Owen Anderson
90f7655f57
Get rid of the global CFGOnly flag by threading a ShortNames parameters through the GraphViz rendering code.
...
Update other uses in the codebase for this change.
llvm-svn: 74084
2009-06-24 17:37:09 +00:00
Dale Johannesen
5bad20bda8
Rewrite 73900 per Duncan's suggestion.
...
llvm-svn: 74082
2009-06-24 17:11:31 +00:00
Chris Lattner
07463b0a0a
remove dead makefile flags.
...
llvm-svn: 74065
2009-06-24 05:29:56 +00:00
Lang Hames
38bf7cf4e2
Fixed a bug in LiveInterval scaling (failure to scale VNI defs correctly), removed old TODO comments.
...
llvm-svn: 74054
2009-06-24 02:17:32 +00:00
Evan Cheng
7292cadf06
Fix support for inline asm input / output operand tying when operand spans across multiple registers (e.g. two i64 operands in 32-bit mode).
...
llvm-svn: 74053
2009-06-24 02:05:51 +00:00