Skip to content
  1. Oct 01, 2009
    • Devang Patel's avatar
      Remove dead code. · 5c13c2d3
      Devang Patel authored
      llvm-svn: 83181
      5c13c2d3
    • Bob Wilson's avatar
      Add a new virtual EmitStartOfAsmFile method to the AsmPrinter and use this · b633d7a6
      Bob Wilson authored
      to emit target-specific things at the beginning of the asm output.  This
      fixes a problem for PPC, where the text sections are not being kept together
      as expected.  The base class doInitialization code calls DW->BeginModule()
      which emits a bunch of DWARF section directives.  The PPC doInitialization
      code then emits all the TEXT section directives, with the intention that they
      will be kept together. But as I understand it, the Darwin assembler treats
      the default TEXT section as a special case and moves it to the beginning of
      the file, which means that all those DWARF sections are in the middle of
      the text.  With this change, the EmitStartOfAsmFile hook is called before
      the DWARF section directives are emitted, so that all the PPC text section
      directives come out right at the beginning of the file.
      
      llvm-svn: 83176
      b633d7a6
  2. Sep 30, 2009
  3. Sep 29, 2009
  4. Sep 28, 2009
  5. Sep 27, 2009
  6. Sep 26, 2009
  7. Sep 25, 2009
    • Evan Cheng's avatar
      Flip -disable-post-RA-scheduler to -post-RA-scheduler. · 3872b3c1
      Evan Cheng authored
      llvm-svn: 82803
      3872b3c1
    • Dan Gohman's avatar
      Improve MachineMemOperand handling. · 48b185d6
      Dan Gohman authored
       - 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
      48b185d6
    • Dan Gohman's avatar
      Rename getTargetNode to getMachineNode, for consistency with the · 32f71d71
      Dan Gohman authored
      naming scheme used in SelectionDAG, where there are multiple kinds
      of "target" nodes, but "machine" nodes are nodes which represent
      a MachineInstr.
      
      llvm-svn: 82790
      32f71d71
    • Dale Johannesen's avatar
      Make sure sin, cos, sqrt calls are marked readonly · a318d91a
      Dale Johannesen authored
      before producing FSIN, FCOS, FSQRT.  If they aren't
      so marked we have to assume they might set errno.
      
      llvm-svn: 82781
      a318d91a
    • Dale Johannesen's avatar
      Generate FSQRT from calls to the sqrt function, which · c7213426
      Dale Johannesen authored
      allows appropriate backends to generate a sqrt instruction.
      
      On x86, this isn't done at -O0 because we go through
      FastISel instead.  This is a behavior change from before
      this series of sqrt patches started.  I think this is OK
      considering that compile speed is most important at -O0, but
      could be convinced otherwise.
      
      llvm-svn: 82778
      c7213426
    • Bob Wilson's avatar
      pr4926: ARM requires the stack pointer to be aligned, even for leaf functions. · d60367c1
      Bob Wilson authored
      For the AAPCS ABI, SP must always be 4-byte aligned, and at any "public
      interface" it must be 8-byte aligned.  For the older ARM APCS ABI, the stack
      alignment is just always 4 bytes.  For X86, we currently align SP at
      entry to a function (e.g., to 16 bytes for Darwin), but no stack alignment
      is needed at other times, such as for a leaf function.
      
      After discussing this with Dan, I decided to go with the approach of adding
      a new "TransientStackAlignment" field to TargetFrameInfo.  This value
      specifies the stack alignment that must be maintained even in between calls.
      It defaults to 1 except for ARM, where it is 4.  (Some other targets may
      also want to set this if they have similar stack requirements. It's not
      currently required for PPC because it sets targetHandlesStackFrameRounding
      and handles the alignment in target-specific code.) The existing StackAlignment
      value specifies the alignment upon entry to a function, which is how we've
      been using it anyway.
      
      llvm-svn: 82767
      d60367c1
    • Nate Begeman's avatar
      Fix combiner-aa issue with bases which are different, but can alias. · 18150d5a
      Nate Begeman authored
      Previously, it treated GV+28 GV+0 as different bases, and assumed they could
      not alias.
      
      llvm-svn: 82753
      18150d5a
    • Dan Gohman's avatar
      Add a version of dumpr() that has a SelectionDAG* argument. · ebdfe4af
      Dan Gohman authored
      llvm-svn: 82742
      ebdfe4af
    • Jim Grosbach's avatar
      Start of revamping the register scavenging in PEI. ARM Thumb1 is the driving · 372e9a38
      Jim Grosbach authored
      interest for this, as it currently reserves a register rather than using
      the scavenger for matierializing constants as needed.
      
      Instead of scavenging registers on the fly while eliminating frame indices,
      new virtual registers are created, and then a scavenged collectively in a
      post-pass over the function. This isolates the bits that need to interact
      with the scavenger, and sets the stage for more intelligent use, and reuse,
      of scavenged registers.
      
      For the time being, this is disabled by default. Once the bugs are worked out,
      the current scavenging calls in replaceFrameIndices() will be removed and
      the post-pass scavenging will be the default. Until then,
      -enable-frame-index-scavenging enables the new code. Currently, only the
      Thumb1 back end is set up to use it.
      
      llvm-svn: 82734
      372e9a38
Loading