Chris Lattner
64fd9487bd
Provide a function that ensures MBB numbering is dense and inorder. This
...
can be used by MachineFunctionPasses who need this property.
llvm-svn: 30706
2006-10-03 19:18:57 +00:00
Chris Lattner
e385fcf098
clean up use of 'explicit'. This is PR934.
...
Patch contributed by Kevin Sopp!
llvm-svn: 30701
2006-10-03 17:09:12 +00:00
Bill Wendling
984f0ce06b
Fix for PR929. The PHI nodes were being gone through for each instruction
...
in a successor block for every block...resulting in some O(N^k) algorithm
which wasn't very good for performance. Calculating this information up
front and keeping it in a map made it much faster.
llvm-svn: 30697
2006-10-03 07:20:20 +00:00
Chris Lattner
1faa3f913c
Move DominatorTree to immediately follow DominatorTreeBase
...
llvm-svn: 30693
2006-10-03 05:24:56 +00:00
Jim Laskey
1368c265da
Add ability to annotate (color) nodes in a viewGraph.
...
llvm-svn: 30686
2006-10-02 12:26:53 +00:00
Chris Lattner
456a806692
Override use_back in instruction/basicblock to provide more type information.
...
llvm-svn: 30678
2006-09-30 22:20:34 +00:00
Chris Lattner
87732cfb71
Add a version of the globalvariable ctor that inserts at a specific location.
...
llvm-svn: 30677
2006-09-30 21:31:26 +00:00
Chris Lattner
befaee91d3
Now that ConstantBool::True/False are gone, we can modify Type.cpp to
...
eliminate its static dtors, without having code that depends on order of
initialization. Eliminate static ctors/dtors from Type.cpp.
llvm-svn: 30667
2006-09-28 23:38:07 +00:00
Chris Lattner
a84df0a2f1
Eliminate ConstantBool::True and ConstantBool::False. Instead, provide
...
ConstantBool::getTrue() and ConstantBool::getFalse().
llvm-svn: 30666
2006-09-28 23:36:21 +00:00
Chris Lattner
a9caf95591
refactor critical edge breaking out into the SplitCritEdgesForPHIConstants method.
...
This is a baby step towards fixing PR925.
llvm-svn: 30643
2006-09-28 06:17:10 +00:00
Chris Lattner
b044ab2b82
remove dead method
...
llvm-svn: 30640
2006-09-28 00:37:43 +00:00
Chris Lattner
9daff49ebb
new helper class to provide more explicit management of static ctor/dtors.
...
llvm-svn: 30638
2006-09-28 00:31:55 +00:00
Evan Cheng
17a8d08dba
- Added a hook processFunctionBeforeCalleeSaveScn(). This is called by PEI just
...
before it determines which callee-save registers are to be spilled. This allows
the target to make changes such as forcing certain physical registers to be
spilled.
- Modified comments. It's important to note the order of registers in the array
returns by getCalleeSaveRegs() determines the order of callee save spill code.
llvm-svn: 30635
2006-09-28 00:07:19 +00:00
Chris Lattner
a32814b033
Add support for ${:comment}, which expands to the current target's comment
...
character, and ${:uid} which expands to a unique ID for the MachineInstr.
More can be added if/when they are needed.
llvm-svn: 30619
2006-09-26 23:59:50 +00:00
Chris Lattner
66af390631
Add support for targets that want to do something with the llvm.used list,
...
because they have an aggressive linker that does dead code stripping.
llvm-svn: 30604
2006-09-26 03:38:18 +00:00
Chris Lattner
991d3997cf
order this properly to avoid warnings in TargetAsmInfo.cpp. Add a comment
...
in a format that matches every other ivars in this class.
llvm-svn: 30603
2006-09-25 22:38:36 +00:00
Andrew Lenharth
783a4a9d86
Add support for other relocation bases to jump tables, as well as custom asm directives
...
llvm-svn: 30593
2006-09-24 19:45:58 +00:00
Chris Lattner
e4583e8c2c
remove misleading comment
...
llvm-svn: 30585
2006-09-23 06:09:45 +00:00
Chris Lattner
4091f4690a
add method, correct comment
...
llvm-svn: 30584
2006-09-23 04:03:45 +00:00
Devang Patel
0c4e730c9c
Use iterative algorith to assign DFS number. This reduces
...
call stack depth.
llvm-svn: 30575
2006-09-22 01:05:33 +00:00
Devang Patel
5af1651f7d
Use abstract class to facilitate dlopen() interface.
...
llvm-svn: 30569
2006-09-21 17:22:55 +00:00
Nick Lewycky
86bda361b0
Fix findCaseDest to return null when BB is both the default dest and one
...
of the numeric cases.
llvm-svn: 30468
2006-09-18 20:44:37 +00:00
Nick Lewycky
51cb632a1b
Add a new helper method to SwitchInst. Useful when you've got a BB from
...
somewhere (like the dominator graph) and would like to know which case it
came from.
llvm-svn: 30466
2006-09-18 19:03:59 +00:00
Jim Laskey
d30bba331f
Sort out mangled names for globals
...
llvm-svn: 30460
2006-09-18 14:47:26 +00:00
Chris Lattner
04fb628ea6
Add support for pattern matching cast operations
...
llvm-svn: 30454
2006-09-18 05:17:11 +00:00
Chris Lattner
8f499f1772
fix typo
...
llvm-svn: 30453
2006-09-18 04:58:06 +00:00
Chris Lattner
b0b8ddd175
add a helper method
...
llvm-svn: 30452
2006-09-18 04:54:57 +00:00
Anton Korobeynikov
6f7072c66a
Added some eye-candy for Subtarget type checking
...
Added X86 StdCall & FastCall calling conventions. Codegen will follow.
llvm-svn: 30446
2006-09-17 20:25:45 +00:00
Chris Lattner
f16dc007e6
Add ShiftInst::isLogical/ArithmeticShift methods.
...
llvm-svn: 30445
2006-09-17 19:29:56 +00:00
Chris Lattner
e1496fbb33
Add new SetCondInst::isRelational/isEquality methods. Rename
...
Instruction::isRelational to Instruction::isComparison.
llvm-svn: 30444
2006-09-17 19:14:47 +00:00
Chris Lattner
8fb3d445f5
Keep track of the start of MBB's in a separate map from instructions. This
...
is faster and is needed for future improvements.
llvm-svn: 30383
2006-09-15 03:57:23 +00:00
Devang Patel
9ce9df5912
Undo previous check-in.
...
Reintroduce recursive assignDFSNumber().
llvm-svn: 30380
2006-09-14 21:43:24 +00:00
Anton Korobeynikov
d61d39ec53
Adding dllimport, dllexport and external weak linkage types.
...
DLL* linkages got full (I hope) codegeneration support in C & both x86
assembler backends.
External weak linkage added for future use, we don't provide any
codegeneration, etc. support for it.
llvm-svn: 30374
2006-09-14 18:23:27 +00:00
Evan Cheng
0460f42da9
Add MachineConstantPoolEntry getOffset() accessor.
...
llvm-svn: 30325
2006-09-14 07:32:32 +00:00
Evan Cheng
316843372e
The top bit is used to determine whether it's a MachineConstantPoolValue.
...
llvm-svn: 30324
2006-09-14 07:30:48 +00:00
Chris Lattner
3a68d40dd3
revert accidentally committed file
...
llvm-svn: 30323
2006-09-14 06:42:17 +00:00
Chris Lattner
e1a6cec41b
Remove dead methods, add getNumBlockIDs() method
...
llvm-svn: 30322
2006-09-14 06:40:48 +00:00
Reid Spencer
d28c7c87d7
Add a HAVE_MACH_MACH_H #define to detect the presence of the mach/mach.h
...
header file on Darwin.
llvm-svn: 30319
2006-09-14 06:17:21 +00:00
Evan Cheng
affe88eeac
Mirrors ConstantPoolSDNode.
...
llvm-svn: 30314
2006-09-14 05:48:39 +00:00
Devang Patel
23d855b40d
Avoid recursion in assignDFSNumber(). Move def from ET-Forest.h
...
to Dominators.h
llvm-svn: 30309
2006-09-14 01:27:42 +00:00
Evan Cheng
45fe3bc72c
Added support for machine specific constantpool values. These are useful for
...
representing expressions that can only be resolved at link time, etc.
llvm-svn: 30278
2006-09-12 21:00:35 +00:00
Nick Lewycky
a3e70372c9
Add ability to remove nodes from DominatorTree, for when a BasicBlock
...
is being removed.
llvm-svn: 30270
2006-09-12 00:18:28 +00:00
Nate Begeman
a0d95a8da9
Behold, more work on relocations. Things are looking pretty good now.
...
llvm-svn: 30240
2006-09-10 23:03:44 +00:00
Chris Lattner
b3c366a3bd
Implement new fpowi node
...
llvm-svn: 30223
2006-09-09 05:55:44 +00:00
Nate Begeman
69df6132d7
First pass at supporting relocations. Relocations are written correctly to
...
the file now, however the relocated address is currently wrong. Fixing
that will require some deep pondering.
llvm-svn: 30207
2006-09-08 22:42:09 +00:00
Chris Lattner
02a7d09b40
add powi intrinsics.
...
llvm-svn: 30176
2006-09-08 06:43:00 +00:00
Jim Laskey
ae92ce8798
1. Remove condition on delete.
...
2. Protect and outline createTargetAsmInfo.
3. Misc. kruft.
llvm-svn: 30169
2006-09-07 23:39:26 +00:00
Jim Laskey
261779bb45
Make target asm info a property of the target machine.
...
llvm-svn: 30162
2006-09-07 22:06:40 +00:00
Chris Lattner
721fc38342
Add new option to leave asm names alone
...
llvm-svn: 30149
2006-09-07 18:20:41 +00:00
Devang Patel
5561aa7271
Add getTargetTriple() that linker can use to query target architecture.
...
llvm-svn: 30132
2006-09-06 20:16:28 +00:00
Devang Patel
ee9f617cff
Keep track of all modules crated using a name to module map.
...
Add private member function getMoudle().
llvm-svn: 30130
2006-09-06 18:50:26 +00:00
Jim Laskey
681ecbb3b3
Separate target specifc asm properties from asm printers.
...
llvm-svn: 30127
2006-09-06 18:35:33 +00:00
Jim Laskey
a6211dcdad
Separate target specific asm properties from the asm printers.
...
llvm-svn: 30126
2006-09-06 18:34:40 +00:00
Devang Patel
e3b9490b05
Extract target triplet from optimized module.
...
Untabify.
llvm-svn: 30123
2006-09-06 00:28:22 +00:00
Evan Cheng
6509c248f3
IsDef can only be accessed / set if operand is a register.
...
llvm-svn: 30119
2006-09-05 20:20:04 +00:00
Evan Cheng
fd500a27f2
Initialize IsDef of all non-register MachineOperand to false.
...
llvm-svn: 30116
2006-09-05 18:56:02 +00:00
Chris Lattner
af23f9b5f6
Completely eliminate def&use operands. Now a register operand is EITHER a
...
def operand or a use operand.
llvm-svn: 30109
2006-09-05 02:31:13 +00:00
Chris Lattner
af87314781
ADd getImm/setImm methods
...
llvm-svn: 30105
2006-09-04 23:35:22 +00:00
Chris Lattner
22f29396db
Add some short-hand accessors
...
llvm-svn: 30104
2006-09-04 23:05:29 +00:00
Duraid Madina
cf6749e4c0
add setJumpBufSize() and setJumpBufAlignment() to target-lowering.
...
Call these from your backend to enjoy setjmp/longjmp goodness, see
lib/Target/IA64/IA64ISelLowering.cpp for an example
llvm-svn: 30095
2006-09-04 06:21:35 +00:00
Chris Lattner
12e97307a1
Completely rearchitect the interface between targets and the pass manager.
...
This pass:
1. Splits TargetMachine into TargetMachine (generic targets, can be implemented
any way, like the CBE) and LLVMTargetMachine (subclass of TM that is used by
things using libcodegen and other support).
2. Instead of having each target fully populate the passmgr for file or JIT
output, move all this to common code, and give targets hooks they can
implement.
3. Commonalize the target population stuff between file emission and JIT
emission.
4. All (native code) codegen stuff now happens in a FunctionPassManager, which
paves the way for "fast -O0" stuff in the CFE later, and now LLC could
lazily stream .bc files from disk to use less memory.
5. There are now many fewer #includes and the targets don't depend on the
scalar xforms or libanalysis anymore (but codegen does).
6. Changing common code generator pass ordering stuff no longer requires
touching all targets.
7. The JIT now has the option of "-fast" codegen or normal optimized codegen,
which is now orthogonal to the fact that JIT'ing is being done.
llvm-svn: 30081
2006-09-04 04:14:57 +00:00
Chris Lattner
2f77922d30
Add explicit doInitialization/doFinalization methods instead of making
...
the FunctionPassManager redo this for each function.
llvm-svn: 30079
2006-09-04 04:07:39 +00:00
Chris Lattner
9183d57c37
Eliminate target name.
...
llvm-svn: 30071
2006-09-03 18:44:26 +00:00
Chris Lattner
8584e940b8
Avoid beating on the mi2i map when we know the answer already.
...
llvm-svn: 30066
2006-09-03 08:07:11 +00:00
Chris Lattner
f8f724a2b1
Move two methods out of line, make them work when the record for a machine
...
instruction includes physregs.
llvm-svn: 30061
2006-09-03 00:05:09 +00:00
Chris Lattner
5aca72aecc
Fix a typo pointed out by Gabor
...
llvm-svn: 30058
2006-09-02 22:27:29 +00:00
Chris Lattner
bc1a280eae
add a prototype
...
llvm-svn: 30051
2006-09-02 05:37:53 +00:00
Chris Lattner
75742e532a
Iteration is required for some cases, even if they don't occur in crafty.
...
Restore it, which re-fixes X86/2006-08-21-ExtraMovInst.ll
llvm-svn: 30050
2006-09-02 05:32:53 +00:00
Chris Lattner
7907ad8472
new method
...
llvm-svn: 30048
2006-09-02 05:26:01 +00:00
Chris Lattner
53ca302eb3
remove some particularly expensive assertions
...
llvm-svn: 30014
2006-09-01 06:57:35 +00:00
Chris Lattner
6bfccbb08b
add a simple reserve method.
...
llvm-svn: 30011
2006-09-01 06:08:16 +00:00
Chris Lattner
f765351978
Iterative coallescing doesn't buy us anything (we get identical results on
...
crafty with and without it). Removing it speeds up live intervals 6%.
llvm-svn: 30010
2006-09-01 04:02:42 +00:00
Chris Lattner
aa36808fd3
avoid calling the virtual isMoveInstr method endlessly by caching its results.
...
llvm-svn: 29994
2006-08-31 05:54:43 +00:00
Chris Lattner
aea29af0bc
Restore source-level compatibility with clients of these functions.
...
llvm-svn: 29978
2006-08-30 20:47:48 +00:00
Chris Lattner
69c32d5564
fix 80 column issue
...
llvm-svn: 29972
2006-08-30 05:56:52 +00:00
Chris Lattner
f5bed76353
Instantiate Statistic<> in one place, not in every .o file that uses it.
...
llvm-svn: 29971
2006-08-30 04:17:00 +00:00
Chris Lattner
34434e97c9
Teach the coallescer to coallesce live intervals joined by an arbitrary
...
number of copies, potentially defining live ranges that appear to have
differing value numbers that become identical when coallsced. Among other
things, this fixes CodeGen/X86/shift-coalesce.ll and PR687.
llvm-svn: 29968
2006-08-29 23:18:15 +00:00
Devang Patel
f489d0f85c
Do not rely on std::sort and std::erase to get list of unique
...
exit blocks. The output is dependent on addresses of basic block.
Add and use Loop::getUniqueExitBlocks.
llvm-svn: 29966
2006-08-29 22:29:16 +00:00
Evan Cheng
e5570a4c3f
Move isCommutativeBinOp from SelectionDAG.cpp and DAGCombiner.cpp out. Make it a static method of SelectionDAG.
...
llvm-svn: 29951
2006-08-29 06:42:35 +00:00
Nick Lewycky
b2e8ae1700
Add PredicateSimplifier pass. Collapses equal variables into one form
...
and simplifies expressions. This implements the optimization described
in PR807.
llvm-svn: 29947
2006-08-28 22:44:55 +00:00
Chris Lattner
86d61a5c02
Add 2nd form of resize
...
llvm-svn: 29945
2006-08-28 21:52:08 +00:00
Chris Lattner
16c203e7c6
remove extraneous space
...
llvm-svn: 29940
2006-08-28 17:30:49 +00:00
Reid Spencer
4969df88a5
Back out last revision which should not have been committed (yet).
...
llvm-svn: 29935
2006-08-28 01:08:45 +00:00
Reid Spencer
e7141c8be6
For PR387:
...
Close out this long standing bug by removing the remaining overloaded
virtual functions in LLVM. The -Woverloaded-virtual option is now turned on.
llvm-svn: 29934
2006-08-28 01:02:49 +00:00
Chris Lattner
97c9f20c52
simplify AnalysisGroup registration, eliminating one typeid call.
...
llvm-svn: 29932
2006-08-28 00:42:29 +00:00
Chris Lattner
7aa139994f
Silence -Woverloaded-virtual warnings.
...
llvm-svn: 29929
2006-08-28 00:09:00 +00:00
Chris Lattner
c2d3d3112e
eliminate RegisterOpt. It does the same thing as RegisterPass.
...
llvm-svn: 29925
2006-08-27 22:42:52 +00:00
Chris Lattner
3c9b2420df
Eliminate RegisterAnalysis. RegisterPass now does all that is necessary.
...
llvm-svn: 29921
2006-08-27 22:30:17 +00:00
Chris Lattner
fbb46500cf
We no longer care whether something is an opt vs analysis pass, only whether
...
something is a pass vs an analysis group now. Simplify interfaces.
llvm-svn: 29920
2006-08-27 22:21:55 +00:00
Chris Lattner
aac4993fdc
Remove a dead class.
...
llvm-svn: 29918
2006-08-27 22:11:07 +00:00
Chris Lattner
3385b922de
add directive to disable inlining
...
llvm-svn: 29912
2006-08-27 13:16:05 +00:00
Chris Lattner
3d27be1333
s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|
...
llvm-svn: 29911
2006-08-27 12:54:02 +00:00
Chris Lattner
3e5d60fcea
Add external definitions for commonly-used template specializations and add
...
anchor methods to others. This eliminates the vtable/template method bloat
in .o files that defining a cl::opt used to impose (~4K per .o file for one
cp::opt<unsigned>).
llvm-svn: 29909
2006-08-27 12:45:47 +00:00
Chris Lattner
658d088641
New place to put compiler-specific functionality. This replaces Visibility.h,
...
and provides macros that can be used to make explicit instantiations of
template specializations, which is a gcc-specific feature.
llvm-svn: 29908
2006-08-27 12:42:45 +00:00
Evan Cheng
849f4bf8dd
Eliminate SelectNodeTo() and getTargetNode() variants which take more than
...
3 SDOperand operands. They are replaced by versions which take an array
of SDOperand and the number of operands.
llvm-svn: 29905
2006-08-27 08:08:54 +00:00
Chris Lattner
96da8294cd
make optional pointer really optional
...
llvm-svn: 29904
2006-08-27 07:11:54 +00:00
Nate Begeman
7851db75d9
Properly size the string table, and emit symbol table and string table
...
entries in the correct order, fixing several fixmes.
llvm-svn: 29902
2006-08-26 15:46:34 +00:00
Evan Cheng
34b70eea5c
SelectNodeTo now returns a SDNode*.
...
llvm-svn: 29901
2006-08-26 08:00:10 +00:00
Chris Lattner
f4f0b1995c
Completely change the way that joining with physregs is implemented. This
...
paves the way for future changes, increases coallescing opportunities (in
theory, not witnessed in practice), and eliminates the really expensive
LiveIntervals::overlapsAliases method.
llvm-svn: 29890
2006-08-25 23:41:24 +00:00
Jim Laskey
fb96c74874
Tidy up.
...
llvm-svn: 29888
2006-08-25 22:56:30 +00:00