- Mar 13, 2009
-
-
Evan Cheng authored
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. llvm-svn: 66875
-
- Feb 04, 2009
-
-
Bill Wendling authored
llvm-svn: 63689
-
- Feb 03, 2009
-
-
Bill Wendling authored
llvm-svn: 63677
-
Bill Wendling authored
llvm-svn: 63676
-
Bill Wendling authored
created. Specifically, those BuildMIs which use "DebugLoc::getUnknownLoc()". I'll remove them soon. llvm-svn: 63584
-
- Jan 27, 2009
-
-
Evan Cheng authored
llvm-svn: 63132
-
Evan Cheng authored
llvm-svn: 63070
-
- Jan 26, 2009
-
-
Evan Cheng authored
llvm-svn: 63009
-
Evan Cheng authored
llvm-svn: 63008
-
- Jan 12, 2009
-
-
Duncan Sands authored
suggested by Chris. llvm-svn: 62099
-
- Nov 03, 2008
-
-
Matthijs Kooijman authored
llvm-svn: 58606
-
- Oct 15, 2008
-
-
Dan Gohman authored
with other debug messages. llvm-svn: 57543
-
- Oct 13, 2008
-
-
Matthijs Kooijman authored
NULL, but just hide some debug output then. llvm-svn: 57437
-
- Sep 16, 2008
-
-
Dan Gohman authored
MachineConstantPool::getConstantPoolIndex actually expects a log2-encoded alignment. llvm-svn: 56248
-
- Sep 04, 2008
-
-
Dan Gohman authored
llvm-svn: 55779
-
- Aug 24, 2008
-
-
Chris Lattner authored
really nice if someone converted MachineFunction::print to raw_ostream. llvm-svn: 55268
-
Chris Lattner authored
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
-
- Jul 28, 2008
-
-
Dan Gohman authored
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
-
- Jul 21, 2008
-
-
Dan Gohman authored
llvm-svn: 53870
-
- Jul 11, 2008
-
-
Dan Gohman authored
llvm-svn: 53471
-
- Jul 08, 2008
-
-
Dan Gohman authored
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
-
- Apr 06, 2008
-
-
Chris Lattner authored
llvm-svn: 49284
-
- Feb 27, 2008
-
-
Evan Cheng authored
llvm-svn: 47657
-
- Feb 26, 2008
-
-
Bill Wendling authored
llvm-svn: 47629
-
Bill Wendling authored
would have been a Godsend here! llvm-svn: 47625
-
- Feb 10, 2008
-
-
Dan Gohman authored
llvm-svn: 46930
-
- Jan 25, 2008
-
-
Chris Lattner authored
a reference to TargetFrameInfo. Rearrange order of fields in StackObject to save a word. llvm-svn: 46348
-
- Dec 31, 2007
-
-
Chris Lattner authored
llvm-svn: 45469
-
Chris Lattner authored
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
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45418
-
- Nov 05, 2007
-
-
Duncan Sands authored
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
-
- Oct 03, 2007
-
-
Dan Gohman authored
of comparing begin() and end(). llvm-svn: 42585
-
- May 03, 2007
-
-
Devang Patel authored
llvm-svn: 36662
-
- May 02, 2007
-
-
Devang Patel authored
Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
-
- May 01, 2007
-
-
Devang Patel authored
llvm-svn: 36632
-
- Apr 26, 2007
-
-
Evan Cheng authored
Change UsedPhysRegs from array bool to BitVector to save some space. Setting / getting its states now go through MachineFunction. llvm-svn: 36451
-
- Apr 25, 2007
-
-
Chris Lattner authored
llvm-svn: 36422
-
- Feb 14, 2007
-
-
Chris Lattner authored
Patch by Scott Michel. llvm-svn: 34266
-
- Jan 20, 2007
-
-
Chris Lattner authored
these alignment amounts to align scalars when we can. Patch by Scott Michel! llvm-svn: 33409
-
- Dec 22, 2006
-
-
Evan Cheng authored
llvm-svn: 32743
-