Skip to content
  1. Jun 30, 2010
  2. Jun 29, 2010
    • Devang Patel's avatar
      Print InlinedAt location. · c728518b
      Devang Patel authored
      llvm-svn: 107208
      c728518b
    • Bill Wendling's avatar
      Introducing the "linker_weak" linkage type. This will be used for Objective-C · 1767723d
      Bill Wendling authored
      metadata types which should be marked as "weak", but which the linker will
      remove upon final linkage. For example, the "objc_msgSend_fixup_alloc" symbol is
      defined like this:
      
             .globl l_objc_msgSend_fixup_alloc
             .weak_definition l_objc_msgSend_fixup_alloc
             .section __DATA, __objc_msgrefs, coalesced
             .align 3
      l_objc_msgSend_fixup_alloc:
              .quad   _objc_msgSend_fixup
              .quad   L_OBJC_METH_VAR_NAME_1
      
      This is different from the "linker_private" linkage type, because it can't have
      the metadata defined with ".weak_definition".
      
      llvm-svn: 107205
      1767723d
    • Devang Patel's avatar
      Do not hardcode DW_AT_stmt_list value. · 24bc1b5b
      Devang Patel authored
      Inspired by Artur Pietrek.
      
      llvm-svn: 107202
      24bc1b5b
    • Jakob Stoklund Olesen's avatar
      Fix the handling of partial redefines in the fast register allocator. · dadea5b1
      Jakob Stoklund Olesen authored
      A partial redefine needs to be treated like a tied operand, and the register
      must be reloaded while processing use operands.
      
      This fixes a bug where partially redefined registers were processed as normal
      defs with a reload added. The reload could clobber another use operand if it was
      a kill that allowed register reuse.
      
      llvm-svn: 107193
      dadea5b1
    • Bob Wilson's avatar
      Fix a register scavenger crash when dealing with undefined subregs. · d91d5bfc
      Bob Wilson authored
      The LowerSubregs pass needs to preserve implicit def operands attached to
      EXTRACT_SUBREG instructions when it replaces those instructions with copies.
      
      llvm-svn: 107189
      d91d5bfc
    • Duncan Sands's avatar
      It seems clear that this should return Changed. · 83d1dd63
      Duncan Sands authored
      llvm-svn: 107141
      83d1dd63
    • Rafael Espindola's avatar
      Add a VT argument to getMinimalPhysRegClass and replace the copy related uses · 38a7d7cb
      Rafael Espindola authored
      of getPhysicalRegisterRegClass with it.
      
      If we want to make a copy (or estimate its cost), it is better to use the
      smallest class as more efficient operations might be possible.
      
      llvm-svn: 107140
      38a7d7cb
    • Duncan Sands's avatar
      getMachineBasicBlockAddress returns a uintptr_t - don't truncate · d34bb4e9
      Duncan Sands authored
      to unsigned only to extend back to a pointer sized value on the
      next line.
      
      llvm-svn: 107139
      d34bb4e9
    • Gabor Greif's avatar
      use ArgOperand APIs · e73d64c2
      Gabor Greif authored
      llvm-svn: 107132
      e73d64c2
    • Duncan Sands's avatar
      Remove initialized but otherwise unused variables. · 6d28e73a
      Duncan Sands authored
      llvm-svn: 107127
      6d28e73a
    • Jim Grosbach's avatar
      When processing loops for scheduling latencies (used for live outs on loop · 907673c4
      Jim Grosbach authored
      back-edges), make sure not to include dbg_value instructions in the count.
      Closing in on the end of rdar://7797940
      
      llvm-svn: 107119
      907673c4
    • Bob Wilson's avatar
      Reapply my if-conversion cleanup from svn r106939 with fixes. · 1e5da550
      Bob Wilson authored
      There are 2 changes relative to the previous version of the patch:
      
      1) For the "simple" if-conversion case, there's no need to worry about
      RemoveExtraEdges not handling an unanalyzable branch.  Predicated terminators
      are ignored in this context, so RemoveExtraEdges does the right thing.
      This might break someday if we ever treat indirect branches (BRIND) as
      predicable, but for now, I just removed this part of the patch, because
      in the case where we do not add an unconditional branch, we rely on keeping
      the fall-through edge to CvtBBI (which is empty after this transformation).
      
      The change relative to the previous patch is:
      
      @@ -1036,10 +1036,6 @@
           IterIfcvt = false;
         }
       
      -  // RemoveExtraEdges won't work if the block has an unanalyzable branch,
      -  // which is typically the case for IfConvertSimple, so explicitly remove
      -  // CvtBBI as a successor.
      -  BBI.BB->removeSuccessor(CvtBBI->BB);
         RemoveExtraEdges(BBI);
       
         // Update block info. BB can be iteratively if-converted.
      
      
      2) My patch exposed a bug in the code for merging the tail of a "diamond",
      which had previously never been exercised.  The code was simply checking that
      the tail had a single predecessor, but there was a case in
      MultiSource/Benchmarks/VersaBench/dbms where that single predecessor was
      neither edge of the diamond.  I added the following change to check for
      that:
      
      @@ -1276,7 +1276,18 @@
         // tail, add a unconditional branch to it.
         if (TailBB) {
           BBInfo TailBBI = BBAnalysis[TailBB->getNumber()];
      -    if (TailBB->pred_size() == 1 && !TailBBI.HasFallThrough) {
      +    bool CanMergeTail = !TailBBI.HasFallThrough;
      +    // There may still be a fall-through edge from BBI1 or BBI2 to TailBB;
      +    // check if there are any other predecessors besides those.
      +    unsigned NumPreds = TailBB->pred_size();
      +    if (NumPreds > 1)
      +      CanMergeTail = false;
      +    else if (NumPreds == 1 && CanMergeTail) {
      +      MachineBasicBlock::pred_iterator PI = TailBB->pred_begin();
      +      if (*PI != BBI1->BB && *PI != BBI2->BB)
      +        CanMergeTail = false;
      +    }
      +    if (CanMergeTail) {
             MergeBlocks(BBI, TailBBI);
             TailBBI.IsDone = true;
           } else {
      
      With these fixes, I was able to run all the SingleSource and MultiSource
      tests successfully.
      
      llvm-svn: 107110
      1e5da550
    • Bob Wilson's avatar
      Unlike other targets, ARM now uses BUILD_VECTORs post-legalization so they · 269a89fd
      Bob Wilson authored
      can't be changed arbitrarily by the DAGCombiner without checking if it is
      running after legalization.
      
      llvm-svn: 107097
      269a89fd
    • Devang Patel's avatar
      Use DW_FORM_addr for DW_AT_entry_pc. · 1de21ec4
      Devang Patel authored
      llvm-svn: 107085
      1de21ec4
    • Dale Johannesen's avatar
      In asm's, output operands with matching input constraints · 17feb07c
      Dale Johannesen authored
      have to be registers, per gcc documentation.  This affects
      the logic for determining what "g" should lower to.  PR 7393.
      A couple of existing testcases are affected.
      
      llvm-svn: 107079
      17feb07c
  3. Jun 28, 2010
  4. Jun 26, 2010
  5. Jun 25, 2010
Loading