aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineFunction.cpp
AgeCommit message (Collapse)AuthorFilesLines
2009-10-28Allow constants of different types to share constant pool entriesDan Gohman1-3/+47
if they have compatible encodings. llvm-svn: 85359
2009-10-25Remove includes of Support/Compiler.h that are no longer needed after theNick Lewycky1-1/+0
VISIBILITY_HIDDEN removal. llvm-svn: 85043
2009-10-25Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.Nick Lewycky1-1/+1
Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
2009-10-09Add basic infrastructure and x86 support for preserving MachineMemOperandDan Gohman1-0/+64
information when unfolding memory references. llvm-svn: 83656
2009-09-30Remove dead code.Devang Patel1-17/+0
llvm-svn: 83181
2009-09-25Improve MachineMemOperand handling.Dan Gohman1-5/+23
- 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
2009-09-15add hooks to hang target-specific goop off MachineModuleInfo,Chris Lattner1-0/+3
move MachineFunctionInfo virtual method out of line to give it a home. llvm-svn: 81940
2009-08-28Reapply 79977.Devang Patel1-1/+1
Use MDNodes to encode debug info in llvm IR. llvm-svn: 80406
2009-08-26Revert 79977. It causes llvm-gcc bootstrap failures on some platforms.Devang Patel1-1/+1
llvm-svn: 80073
2009-08-25Update DebugInfo interface to use metadata, instead of special named ↵Devang Patel1-1/+1
llvm.dbg.... global variables, to encode debugging information in llvm IR. This is mostly a mechanical change that tests metadata support very well. This change speeds up llvm-gcc by more then 6% at "-O0 -g" (measured by compiling InstructionCombining.cpp!) llvm-svn: 79977
2009-08-23Fix some refactos for iostream changes (in -Asserts mode).Daniel Dunbar1-4/+4
- The world needs better C++ refactoring tools, can I get an Amen!? llvm-svn: 79843
2009-08-23remove std::ostream versions of printing stuff for MBB and MF,Chris Lattner1-19/+13
upgrading a few things to use raw_ostream llvm-svn: 79811
2009-08-23convert some stuff to work on raw_ostreams instead of std::ostream.Chris Lattner1-16/+18
llvm-svn: 79803
2009-08-23remove dead PrefixPrinter class.Chris Lattner1-8/+5
llvm-svn: 79796
2009-08-19Add missing includes.David Greene1-0/+1
llvm-svn: 79480
2009-08-17Remove a bit more cruft from the sjlj moving to a backend pass.Jim Grosbach1-3/+0
llvm-svn: 79272
2009-08-13Push LLVMContexts through the IntegerType APIs.Owen Anderson1-1/+2
llvm-svn: 78948
2009-08-13Add MachineFrameInfo::getPristineRegisters(MBB) method.Jakob Stoklund Olesen1-1/+31
llvm-svn: 78911
2009-08-11SjLj based exception handling unwinding support. This patch is nasty, brutishJim Grosbach1-0/+3
and short. Well, it's kinda short. Definitely nasty and brutish. The front-end generates the register/unregister calls into the SjLj runtime, call-site indices and landing pad dispatch. The back end fills in the LSDA with the call-site information provided by the front end. Catch blocks are not yet implemented. Built on Darwin and verified no llvm-core "make check" regressions. llvm-svn: 78625
2009-08-03Re-apply LiveInterval index dumping patch, with fixes suggested by BillDavid Greene1-3/+6
and others. llvm-svn: 78003
2009-08-03Fix some comments referring to std::cerr.Daniel Dunbar1-2/+2
llvm-svn: 77931
2009-07-31MachineFunction no longer needs Annotation.Dan Gohman1-2/+1
llvm-svn: 77704
2009-07-31Reapply r77654 with a fix: MachineFunctionPass's getAnalysisUsageDan Gohman1-71/+2
shouldn't do AU.setPreservesCFG(), because even though CodeGen passes don't modify the LLVM IR CFG, they may modify the MachineFunction CFG, and passes like MachineLoop are registered with isCFGOnly set to true. llvm-svn: 77691
2009-07-31Revert r77654, it appears to be causing llvm-gcc bootstrap failures, and manyDaniel Dunbar1-2/+71
failures when building assorted projects with clang. --- Reverse-merging r77654 into '.': U include/llvm/CodeGen/Passes.h U include/llvm/CodeGen/MachineFunctionPass.h U include/llvm/CodeGen/MachineFunction.h U include/llvm/CodeGen/LazyLiveness.h U include/llvm/CodeGen/SelectionDAGISel.h D include/llvm/CodeGen/MachineFunctionAnalysis.h U include/llvm/Function.h U lib/Target/CellSPU/SPUISelDAGToDAG.cpp U lib/Target/PowerPC/PPCISelDAGToDAG.cpp U lib/CodeGen/LLVMTargetMachine.cpp U lib/CodeGen/MachineVerifier.cpp U lib/CodeGen/MachineFunction.cpp U lib/CodeGen/PrologEpilogInserter.cpp U lib/CodeGen/MachineLoopInfo.cpp U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp D lib/CodeGen/MachineFunctionAnalysis.cpp D lib/CodeGen/MachineFunctionPass.cpp U lib/CodeGen/LiveVariables.cpp llvm-svn: 77661
2009-07-31Manage MachineFunctions with an analysis Pass instead of the AnnotableDan Gohman1-71/+2
mechanism. To support this, make MachineFunctionPass a little more complete. llvm-svn: 77654
2009-07-25More migration to raw_ostream, the water has dried up around the iostream hole.Daniel Dunbar1-2/+2
- Some clients which used DOUT have moved to DEBUG. We are deprecating the "magic" DOUT behavior which avoided calling printing functions when the statement was disabled. In addition to being unnecessary magic, it had the downside of leaving code in -Asserts builds, and of hiding potentially unnecessary computations. llvm-svn: 77019
2009-07-24Switch to getNameStr().Daniel Dunbar1-4/+4
llvm-svn: 76962
2009-07-22reimplement Constant::ContainsRelocations as Chris Lattner1-13/+1
Constant::getRelocationInfo(), which has a much simpler to use API. It still should not be part of libvmcore, but is better than it was. Also teach it to be smart about hidden visibility. llvm-svn: 76700
2009-07-21no really, I can spell!Chris Lattner1-2/+2
llvm-svn: 76679
2009-07-21add an API so target-independent codegen can determine if a constantChris Lattner1-1/+20
pool entry will require relocations against it. I implemented this conservatively for ARM, someone who is knowledgable about it should see if this can be improved. llvm-svn: 76678
2009-07-21revert r76602, 76603, and r76615, pending design discussions.Chris Lattner1-6/+3
llvm-svn: 76646
2009-07-21Add PrefixPrinter arguments to the dump routines for MachineFunction andDavid Greene1-3/+6
MachineBasicBlock. We'll use these shortly. llvm-svn: 76603
2009-06-30Add an "alignment" field to the MachineFunction object. It makes more sense toBill Wendling1-4/+6
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-25My guess is that RegInfo should only call the Allocator.Deallocator if it's notBill Wendling1-7/+10
null. llvm-svn: 74147
2009-06-24Get rid of the global CFGOnly flag by threading a ShortNames parameters ↵Owen Anderson1-12/+10
through the GraphViz rendering code. Update other uses in the codebase for this change. llvm-svn: 74084
2009-05-21Temporarily revert r72191. It was causing an assert during llvm-gccBill Wendling1-17/+1
bootstrapping. llvm-svn: 72200
2009-05-20Introduce DebugScope which gets embedded into the machine instructions' ↵Argyrios Kyrtzidis1-1/+17
DebugLoc. DebugScope refers to a debug region, function or block. llvm-svn: 72191
2009-05-14Down with static variables!Owen Anderson1-4/+8
Part one of many. llvm-svn: 71785
2009-05-13Removing the HasBuiltinSetjmp flag and associated bits. Flagging the presenceJim Grosbach1-1/+0
of exception handling builtin sjlj targets in functions turns out not to be necessary. Marking the intrinsic implementation in the .td file as defining all registers is sufficient to get the context saved properly by the containing function. llvm-svn: 71743
2009-05-12Add support for GCC compatible builtin setjmp and longjmp intrinsics. This isJim Grosbach1-0/+1
a supporting preliminary patch for GCC-compatible SjLJ exception handling. Note that these intrinsics are not designed to be invoked directly by the user, but rather used by the front-end as target hooks for exception handling. llvm-svn: 71610
2009-04-30Make DebugLoc independent of DwarfWriter.Argyrios Kyrtzidis1-3/+3
-Replace DebugLocTuple's Source ID with CompileUnit's GlobalVariable* -Remove DwarfWriter::getOrCreateSourceID -Make necessary changes for the above (fix callsites, etc.) llvm-svn: 70520
2009-04-20Move duplicated AddLiveIn function from X86 and ARM backends to be a methodBob Wilson1-0/+10
in the MachineFunction class, renaming it to addLiveIn for consistency with the same method in MachineBasicBlock. Thanks for Anton for suggesting this. llvm-svn: 69615
2009-04-15Move MachineJumpTableInfo::ReplaceMBBInJumpTables out of line.Dan Gohman1-0/+17
llvm-svn: 69125
2009-04-13Add a new "available_externally" linkage type. This is intendedChris Lattner1-2/+8
to support C99 inline, GNU extern inline, etc. Related bugzilla's include PR3517, PR3100, & PR2933. Nothing uses this yet, but it appears to work. llvm-svn: 68940
2009-03-23Now that errs() is properly non-buffered, there's no need toDan Gohman1-1/+1
explicitly flush it. llvm-svn: 67526
2009-03-13Fix some significant problems with constant pools that resulted in ↵Evan Cheng1-21/+6
unnecessary paddings between constant pool entries, larger than necessary alignments (e.g. 8 byte alignment for .literal4 sections), and potentially other issues. 1. ConstantPoolSDNode alignment field is log2 value of the alignment requirement. This is not consistent with other SDNode variants. 2. MachineConstantPool alignment field is also a log2 value. 3. However, some places are creating ConstantPoolSDNode with alignment value rather than log2 values. This creates entries with artificially large alignments, e.g. 256 for SSE vector values. 4. Constant pool entry offsets are computed when they are created. However, asm printer group them by sections. That means the offsets are no longer valid. However, asm printer uses them to determine size of padding between entries. 5. Asm printer uses expensive data structure multimap to track constant pool entries by sections. 6. Asm printer iterate over SmallPtrSet when it's emitting constant pool entries. This is non-deterministic. Solutions: 1. ConstantPoolSDNode alignment field is changed to keep non-log2 value. 2. MachineConstantPool alignment field is also changed to keep non-log2 value. 3. Functions that create ConstantPool nodes are passing in non-log2 alignments. 4. MachineConstantPoolEntry no longer keeps an offset field. It's replaced with an alignment field. Offsets are not computed when constant pool entries are created. They are computed on the fly in asm printer and JIT. 5. Asm printer uses cheaper data structure to group constant pool entries. 6. Asm printer compute entry offsets after grouping is done. 7. Change JIT code to compute entry offsets on the fly. llvm-svn: 66875
2009-02-04Constify and don't return a reference.Bill Wendling1-1/+1
llvm-svn: 63689
2009-02-03Erm. Would be nice to initialize this variable. . .Bill Wendling1-1/+1
llvm-svn: 63677
2009-02-03Add getDebugLocTuple to retrieve the DebugLocTuple for a given DebugLoc object.Bill Wendling1-3/+11
llvm-svn: 63676
2009-02-03Create DebugLoc information in FastISel. Several temporary methods wereBill Wendling1-2/+3
created. Specifically, those BuildMIs which use "DebugLoc::getUnknownLoc()". I'll remove them soon. llvm-svn: 63584