summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/MachineFunction.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add a new "available_externally" linkage type. This is intendedChris Lattner2009-04-131-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
* Now that errs() is properly non-buffered, there's no need toDan Gohman2009-03-231-1/+1
| | | | | | explicitly flush it. llvm-svn: 67526
* Fix some significant problems with constant pools that resulted in ↵Evan Cheng2009-03-131-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
* Constify and don't return a reference.Bill Wendling2009-02-041-1/+1
| | | | llvm-svn: 63689
* Erm. Would be nice to initialize this variable. . .Bill Wendling2009-02-031-1/+1
| | | | llvm-svn: 63677
* Add getDebugLocTuple to retrieve the DebugLocTuple for a given DebugLoc object.Bill Wendling2009-02-031-3/+11
| | | | llvm-svn: 63676
* Create DebugLoc information in FastISel. Several temporary methods wereBill Wendling2009-02-031-2/+3
| | | | | | | created. Specifically, those BuildMIs which use "DebugLoc::getUnknownLoc()". I'll remove them soon. llvm-svn: 63584
* Refine DebugLoc per review comments.Evan Cheng2009-01-271-6/+7
| | | | llvm-svn: 63132
* No need to keep size of DebugLocations vector separately.Evan Cheng2009-01-261-2/+3
| | | | llvm-svn: 63070
* Actually source file has already been uniquified into an id during isel. ↵Evan Cheng2009-01-261-15/+3
| | | | | | Eliminate the StringMap. llvm-svn: 63009
* Add data structure to define and track debug location during codegen.Evan Cheng2009-01-261-0/+27
| | | | llvm-svn: 63008
* Rename getABITypeSize to getTypePaddedSize, asDuncan Sands2009-01-121-2/+2
| | | | | | suggested by Chris. llvm-svn: 62099
* Make MachineFrameInfo::print not crash when no TargetFrameInfo is available.Matthijs Kooijman2008-11-031-1/+2
| | | | llvm-svn: 58606
* Adjust whitespace in debug messages to be more consistentDan Gohman2008-10-151-3/+3
| | | | | | with other debug messages. llvm-svn: 57543
* Make MachineFunction not crash when TargetMachine::getRegisterInfo() returnsMatthijs Kooijman2008-10-131-5/+9
| | | | | | NULL, but just hide some debug output then. llvm-svn: 57437
* Fix these comments to reflect current reality. Surprisingly,Dan Gohman2008-09-161-1/+2
| | | | | | | MachineConstantPool::getConstantPoolIndex actually expects a log2-encoded alignment. llvm-svn: 56248
* Tidy up several unbeseeming casts from pointer to intptr_t.Dan Gohman2008-09-041-2/+2
| | | | llvm-svn: 55779
* get MachineConstantPool off std::ostream, onto raw_ostream. It would beChris Lattner2008-08-231-8/+6
| | | | | | really nice if someone converted MachineFunction::print to raw_ostream. llvm-svn: 55268
* Switch the asmprinter (.ll) and all the stuff it requires over toChris Lattner2008-08-231-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | use raw_ostream instead of std::ostream. Among other goodness, this speeds up llvm-dis of kc++ with a release build from 0.85s to 0.49s (88% faster). Other interesting changes: 1) This makes Value::print be non-virtual. 2) AP[S]Int and ConstantRange can no longer print to ostream directly, use raw_ostream instead. 3) This fixes a bug in raw_os_ostream where it didn't flush itself when destroyed. 4) This adds a new SDNode::print method, instead of only allowing "dump". A lot of APIs have both std::ostream and raw_ostream versions, it would be useful to go through and systematically anihilate the std::ostream versions. This passes dejagnu, but there may be minor fallout, plz let me know if so and I'll fix it. llvm-svn: 55263
* Fold the useful features of alist and alist_node into ilist, andDan Gohman2008-07-281-19/+1
| | | | | | | | | | | | | | | | a new ilist_node class, and remove them. Unlike alist_node, ilist_node doesn't attempt to manage storage itself, so it avoids the associated problems, including being opaque in gdb. Adjust the Recycler class so that it doesn't depend on alist_node. Also, change it to use explicit Size and Align parameters, allowing it to work when the largest-sized node doesn't have the greatest alignment requirement. Change MachineInstr's MachineMemOperand list from a pool-backed alist to a std::list for now. llvm-svn: 54146
* Fix uses of underscore-capital names.Dan Gohman2008-07-211-2/+2
| | | | llvm-svn: 53870
* Trim unnecessary #includes.Dan Gohman2008-07-111-1/+0
| | | | llvm-svn: 53471
* Pool-allocation for MachineInstrs, MachineBasicBlocks, andDan Gohman2008-07-071-31/+92
| | | | | | | | | | | MachineMemOperands. The pools are owned by MachineFunctions. This drastically reduces the number of calls to malloc/free made during the "Emit" phase of scheduling, as well as later phases in CodeGen. Combined with other changes, this speeds up the "instruction selection" phase of CodeGen by 10% in some cases. llvm-svn: 53212
* Silence warning when no assertions.Chris Lattner2008-04-061-1/+2
| | | | llvm-svn: 49284
* Spiller now remove unused spill slots.Evan Cheng2008-02-271-0/+4
| | | | llvm-svn: 47657
* Rename PrintableName to Name.Bill Wendling2008-02-261-2/+2
| | | | llvm-svn: 47629
* Change "Name" to "AsmName" in the target register info. Gee, a refactoring toolBill Wendling2008-02-261-2/+2
| | | | | | would have been a Godsend here! llvm-svn: 47625
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-101-5/+5
| | | | llvm-svn: 46930
* move MachineFrameInfo::CreateFixedObject out of line, give MachineFrameInfoChris Lattner2008-01-251-1/+14
| | | | | | | a reference to TargetFrameInfo. Rearrange order of fields in StackObject to save a word. llvm-svn: 46348
* properly encapsulate the parent field of MBB and MI with get/set accessors.Chris Lattner2007-12-311-6/+8
| | | | llvm-svn: 45469
* Rename SSARegMap -> MachineRegisterInfo in keeping with the idea Chris Lattner2007-12-311-15/+11
| | | | | | | | | | | | | | that "machine" classes are used to represent the current state of the code being compiled. Given this expanded name, we can start moving other stuff into it. For now, move the UsedPhysRegs and LiveIn/LoveOuts vectors from MachineFunction into it. Update all the clients to match. This also reduces some needless #includes, such as MachineModuleInfo from MachineFunction. llvm-svn: 45467
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Eliminate the remaining uses of getTypeSize. ThisDuncan Sands2007-11-051-2/+2
| | | | | | | | | | | | | | should only effect x86 when using long double. Now 12/16 bytes are output for long double globals (the exact amount depends on the alignment). This brings globals in line with the rest of LLVM: the space reserved for an object is now always the ABI size. One tricky point is that only 10 bytes should be output for long double if it is a field in a packed struct, which is the reason for the additional argument to EmitGlobalConstant. llvm-svn: 43688
* Use empty() member functions when that's what's being tested for insteadDan Gohman2007-10-031-2/+2
| | | | | | of comparing begin() and end(). llvm-svn: 42585
* Drop 'const'Devang Patel2007-05-031-4/+4
| | | | llvm-svn: 36662
* Use 'static const char' instead of 'static const int'.Devang Patel2007-05-021-4/+4
| | | | | | | Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
* Do not use typeinfo to identify pass in pass manager.Devang Patel2007-05-011-2/+9
| | | | llvm-svn: 36632
* Change UsedPhysRegs from array bool to BitVector to save some space. Setting ↵Evan Cheng2007-04-251-2/+2
| | | | | | / getting its states now go through MachineFunction. llvm-svn: 36451
* support > 4G stack objectsChris Lattner2007-04-251-1/+1
| | | | llvm-svn: 36422
* Generalize TargetData strings, to support more interesting forms of data.Chris Lattner2007-02-141-1/+2
| | | | | | Patch by Scott Michel. llvm-svn: 34266
* Teach TargetData to handle 'preferred' alignment for each target, and useChris Lattner2007-01-201-1/+2
| | | | | | these alignment amounts to align scalars when we can. Patch by Scott Michel! llvm-svn: 33409
* Debug dump error.Evan Cheng2006-12-221-1/+1
| | | | llvm-svn: 32743
* 1. Tidy up jump table info.Jim Laskey2006-12-141-9/+9
| | | | | | 2. Allow the jit to handle PIC relocable jump tables. llvm-svn: 32581
* Removed more <iostream> includesBill Wendling2006-12-071-8/+6
| | | | llvm-svn: 32321
* const'ify jump table stuffChris Lattner2006-10-281-1/+1
| | | | llvm-svn: 31269
* add an assertChris Lattner2006-10-281-0/+1
| | | | llvm-svn: 31267
* BugfixesChris Lattner2006-10-031-7/+5
| | | | llvm-svn: 30709
* Provide a function that ensures MBB numbering is dense and inorder. ThisChris Lattner2006-10-031-0/+47
| | | | | | can be used by MachineFunctionPasses who need this property. llvm-svn: 30706
* Use getOffset() instead.Evan Cheng2006-09-141-2/+2
| | | | llvm-svn: 30327
* A MachineConstantPool may have mixed Constant* and MachineConstantPoolValue* ↵Evan Cheng2006-09-141-2/+8
| | | | | | values. llvm-svn: 30316
OpenPOWER on IntegriCloud