#
6c938801 |
| 30-Oct-2009 |
Dan Gohman <gohman@apple.com> |
Initial target-independent CodeGen support for BlockAddresses.
llvm-svn: 85556
|
Revision tags: llvmorg-2.6.0 |
|
#
f781bd89 |
| 21-Oct-2009 |
Evan Cheng <evan.cheng@apple.com> |
Need a comma after imp-use.
llvm-svn: 84749
|
#
70b1fa5a |
| 14-Oct-2009 |
Evan Cheng <evan.cheng@apple.com> |
Print earlyclobber for implicit-defs as well.
llvm-svn: 84152
|
#
d7ebfe39 |
| 13-Oct-2009 |
Devang Patel <dpatel@apple.com> |
s/DebugLoc.CompileUnit/DebugLoc.Scope/g s/DebugLoc.InlinedLoc/DebugLoc.InlinedAtLoc/g
llvm-svn: 84054
|
#
87b02d5b |
| 09-Oct-2009 |
Dan Gohman <gohman@apple.com> |
Factor out LiveIntervalAnalysis' code to determine whether an instruction is trivially rematerializable and integrate it into TargetInstrInfo::isTriviallyReMaterializable. This way, all places that n
Factor out LiveIntervalAnalysis' code to determine whether an instruction is trivially rematerializable and integrate it into TargetInstrInfo::isTriviallyReMaterializable. This way, all places that need to know whether an instruction is rematerializable will get the same answer.
This enables the useful parts of the aggressive-remat option by default -- using AliasAnalysis to determine whether a memory location is invariant, and removes the questionable parts -- rematting operations with virtual register inputs that may not be live everywhere.
llvm-svn: 83687
show more ...
|
#
e19c1810 |
| 09-Oct-2009 |
Dan Gohman <gohman@apple.com> |
isTriviallyReMaterializable checks the TargetInstrDesc::isRematerializable flag, so it isn't necessary to do this check in its callers.
llvm-svn: 83671
|
#
be8137b0 |
| 07-Oct-2009 |
Dan Gohman <gohman@apple.com> |
Replace TargetInstrInfo::isInvariantLoad and its target-specific implementations with a new MachineInstr::isInvariantLoad, which uses MachineMemOperands and is target-independent. This brings Machine
Replace TargetInstrInfo::isInvariantLoad and its target-specific implementations with a new MachineInstr::isInvariantLoad, which uses MachineMemOperands and is target-independent. This brings MachineLICM and other functionality to targets which previously lacked an isInvariantLoad implementation.
llvm-svn: 83475
show more ...
|
#
fdd87907 |
| 05-Oct-2009 |
Chris Lattner <sabre@nondot.org> |
strength reduce a ton of type equality tests to check the typeid (Through the new predicates I added) instead of going through a context and doing a pointer comparison. Besides being cheaper, this a
strength reduce a ton of type equality tests to check the typeid (Through the new predicates I added) instead of going through a context and doing a pointer comparison. Besides being cheaper, this allows a smart compiler to turn the if sequence into a switch.
llvm-svn: 83297
show more ...
|
#
b296942f |
| 29-Sep-2009 |
Devang Patel <dpatel@apple.com> |
Remove std::string uses from DebugInfo interface.
llvm-svn: 83083
|
#
5a6b11cb |
| 25-Sep-2009 |
Dan Gohman <gohman@apple.com> |
Move MachineMemOperand::getAlignment out of line, to avoid needing MathExtras.h in MachineMemOperand.h.
llvm-svn: 82822
|
#
48b185d6 |
| 25-Sep-2009 |
Dan Gohman <gohman@apple.com> |
Improve MachineMemOperand handling. - Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions. This eliminates MachineInstr's std::list member and allows the data to be cre
Improve MachineMemOperand handling. - Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions. This eliminates MachineInstr's std::list member and allows the data to be created by isel and live for the remainder of codegen, avoiding a lot of copying and unnecessary translation. This also shrinks MemSDNode. - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated fields for MachineMemOperands. - Change MemSDNode to have a MachineMemOperand member instead of its own fields with the same information. This introduces some redundancy, but it's more consistent with what MachineInstr will eventually want. - Ignore alignment when searching for redundant loads for CSE, but remember the greatest alignment.
Target-specific code which previously used MemOperandSDNodes with generic SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range so that the SelectionDAG framework knows that MachineMemOperand information is available.
llvm-svn: 82794
show more ...
|
#
c0353bff |
| 23-Sep-2009 |
Dan Gohman <gohman@apple.com> |
Give MachineMemOperand an operator<<, factoring out code from two different places for printing MachineMemOperands.
Drop the virtual from Value::dump and instead give Value a protected virtual hook
Give MachineMemOperand an operator<<, factoring out code from two different places for printing MachineMemOperands.
Drop the virtual from Value::dump and instead give Value a protected virtual hook that can be overridden by subclasses to implement custom printing. This lets printing be more consistent, and simplifies printing of PseudoSourceValue values.
llvm-svn: 82599
show more ...
|
#
e7c8242b |
| 21-Sep-2009 |
Dan Gohman <gohman@apple.com> |
Change MachineMemOperand's alignment value to be the alignment of the base pointer, without the offset. This matches MemSDNode's new alignment behavior, and holds more interesting information.
llvm-
Change MachineMemOperand's alignment value to be the alignment of the base pointer, without the offset. This matches MemSDNode's new alignment behavior, and holds more interesting information.
llvm-svn: 82473
show more ...
|
#
9632c149 |
| 17-Sep-2009 |
Jim Grosbach <grosbach@apple.com> |
grammar
llvm-svn: 82150
|
#
471ba48c |
| 23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
remove some uses of llvm/Support/Streams.h
llvm-svn: 79842
|
#
a6f074fb |
| 23-Aug-2009 |
Chris Lattner <sabre@nondot.org> |
remove various std::ostream version of printing methods from MachineInstr and MachineOperand. This required eliminating a bunch of stuff that was using DOUT, I hope that bill doesn't mind me stealin
remove various std::ostream version of printing methods from MachineInstr and MachineOperand. This required eliminating a bunch of stuff that was using DOUT, I hope that bill doesn't mind me stealing his fun. ;-)
llvm-svn: 79813
show more ...
|
#
55f1c09e |
| 13-Aug-2009 |
Owen Anderson <resistor@mac.com> |
Push LLVMContexts through the IntegerType APIs.
llvm-svn: 78948
|
#
f465f06a |
| 04-Aug-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Don't tamper with <undef> operands in MachineInstr::addRegisterKilled.
For an undef operand, MO.getReg() is meaningless and we should not use it. Undef operands should be skipped entirely.
llvm-svn
Don't tamper with <undef> operands in MachineInstr::addRegisterKilled.
For an undef operand, MO.getReg() is meaningless and we should not use it. Undef operands should be skipped entirely.
llvm-svn: 78095
show more ...
|
#
5d8ace09 |
| 03-Aug-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Fix Bug 4657: register scavenger asserts with subreg lowering
When LowerSubregsInstructionPass::LowerInsert eliminates an INSERT_SUBREG instriction because it is an identity copy, make sure that the
Fix Bug 4657: register scavenger asserts with subreg lowering
When LowerSubregsInstructionPass::LowerInsert eliminates an INSERT_SUBREG instriction because it is an identity copy, make sure that the same registers are alive before and after the elimination.
When the super-register is marked <undef> this requires inserting an IMPLICIT_DEF instruction to make sure the super register is live.
Fix a related bug where a kill flag on the inserted sub-register was not transferred properly.
Finally, clear the undef flag in MachineInstr::addRegisterKilled. Undef implies dead and kill implies live, so they cant both be valid.
llvm-svn: 77989
show more ...
|
#
c59cd9bc |
| 02-Aug-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Never add a kill flag to a constrained physical register in a two-addr instruction.
llvm-svn: 77906
|
#
4a040410 |
| 28-Jul-2009 |
Evan Cheng <evan.cheng@apple.com> |
Fix a typo.
llvm-svn: 77369
|
#
aba695c7 |
| 19-Jul-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Fix http://llvm.org/bugs/show_bug.cgi?id=4583
Inline asm instructions may have additional <imp-def,kill> register operands. These operands are not marked with a flag like the normal asm operands, so
Fix http://llvm.org/bugs/show_bug.cgi?id=4583
Inline asm instructions may have additional <imp-def,kill> register operands. These operands are not marked with a flag like the normal asm operands, so we must not assert that there is a flag.
llvm-svn: 76373
show more ...
|
#
070fab8a |
| 16-Jul-2009 |
Jakob Stoklund Olesen <stoklund@2pi.dk> |
Teach MachineInstr::isRegTiedToDefOperand() to correctly parse inline asm operands.
The inline asm operands must be parsed from the first flag, you cannot assume that an immediate operand preceeding
Teach MachineInstr::isRegTiedToDefOperand() to correctly parse inline asm 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
show more ...
|
#
fbcc663c |
| 14-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location i
llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable. This adds location info for all llvm_unreachable calls (which is a macro now) in !NDEBUG builds. In NDEBUG builds location info and the message is off (it only prints "UREACHABLE executed").
llvm-svn: 75640
show more ...
|
#
56d06597 |
| 11-Jul-2009 |
Torok Edwin <edwintorok@gmail.com> |
assert(0) -> LLVM_UNREACHABLE. Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG bu
assert(0) -> LLVM_UNREACHABLE. Make llvm_unreachable take an optional string, thus moving the cerr<< out of line. LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for NDEBUG builds.
llvm-svn: 75379
show more ...
|