llvm-6502/include/llvm
Evan Cheng 1606e8e4cd Fix some significant problems with constant pools that resulted in 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66875 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-13 07:51:59 +00:00
..
ADT Add StringMap::lookup. 2009-03-12 01:16:06 +00:00
Analysis Oops...I committed too much. 2009-03-13 04:39:26 +00:00
Assembly add a #include to improve portability to windows, as requested by 2009-03-09 05:10:08 +00:00
Bitcode Removed trailing whitespace. 2009-02-20 23:04:06 +00:00
CodeGen Fix some significant problems with constant pools that resulted in unnecessary paddings between constant pool entries, larger than necessary alignments (e.g. 8 byte alignment for .literal4 sections), and potentially other issues. 2009-03-13 07:51:59 +00:00
CompilerDriver Remove some duplication. 2009-03-07 20:18:46 +00:00
Config Regenerate. 2009-03-09 06:16:46 +00:00
Debugger
ExecutionEngine Add support to the JIT for true non-lazy operation. When a call to a function 2009-02-18 08:31:02 +00:00
Support raw_ostream: unbuffered streams weren't being immediately flushed on 2009-03-12 22:02:44 +00:00
System Add a new 'AddSignalHandler' function to Signals.h that allows 2009-03-04 21:21:36 +00:00
Target Add a -no-implicit-float flag. This acts like -soft-float, but may generate 2009-03-11 22:30:01 +00:00
Transforms Add helper pass to remove llvm.dbg.declare intrinsics. 2009-03-09 20:49:37 +00:00
AbstractTypeUser.h
Argument.h
Attributes.h
AutoUpgrade.h
BasicBlock.h Revert r66415. It's causing failures during bootstrap builds: 2009-03-09 18:01:33 +00:00
CallGraphSCCPass.h
CallingConv.h
CMakeLists.txt
Constant.h
Constants.h Fix a bunch of Doxygen syntax issues. Escape special characters, 2009-03-03 02:55:14 +00:00
DerivedTypes.h 80-column violation. 2009-02-14 08:41:25 +00:00
Function.h Revert r66415. It's causing failures during bootstrap builds: 2009-03-09 18:01:33 +00:00
GlobalAlias.h
GlobalValue.h It makes no sense to have a ODR version of common 2009-03-11 20:14:15 +00:00
GlobalVariable.h
InlineAsm.h
InstrTypes.h
Instruction.def
Instruction.h
Instructions.h cosmetic change, in preparation of future change 2009-03-12 23:13:03 +00:00
IntrinsicInst.h change the MemIntrinsic get/setAlignment method to take an unsigned 2009-03-08 03:59:00 +00:00
Intrinsics.h Added support to have TableGen provide information if an intrinsic (core 2009-02-24 23:17:49 +00:00
Intrinsics.td Add some cautionary comments. 2009-03-04 21:53:29 +00:00
IntrinsicsAlpha.td
IntrinsicsARM.td
IntrinsicsCellSPU.td
IntrinsicsPowerPC.td
IntrinsicsX86.td ADDS{D|S}rr_Int and MULS{D|S}rr_Int are not commutable. The users of these intrinsics expect the high bits will not be modified. 2009-02-26 03:12:02 +00:00
IntrinsicsXCore.td
LinkAllPasses.h
LinkAllVMCore.h
Linker.h
Module.h simplify the way how traits get hold of the symbol table 2009-03-07 12:33:24 +00:00
ModuleProvider.h
OperandTraits.h Give Op<N>() AppleScript-like semantics, i.e. for negative N it indexes relative to op_end. 2009-03-10 23:02:13 +00:00
Pass.h
PassAnalysisSupport.h
PassManager.h
PassManagers.h Fully initialize all ivars, fixing PR3790, patch by Edwin Torok! 2009-03-12 17:22:48 +00:00
PassSupport.h remove a deprecated interface that was pretty useless 2009-03-02 12:42:07 +00:00
SymbolTableListTraits.h simplify the way how traits get hold of the symbol table 2009-03-07 12:33:24 +00:00
Type.h delete a bunch of duplicated type printing logic, using the type printing 2009-02-28 23:01:57 +00:00
TypeSymbolTable.h
Use.h Rearrange operands of the BranchInst, to be able to 2009-03-12 18:34:49 +00:00
User.h Rearrange operands of the BranchInst, to be able to 2009-03-12 18:34:49 +00:00
Value.h
ValueSymbolTable.h