Skip to content
  1. Mar 13, 2008
  2. Mar 12, 2008
    • Evan Cheng's avatar
      Experimental scheduler change to schedule / coalesce the copies added for... · 65e9d5f1
      Evan Cheng authored
      Experimental scheduler change to schedule / coalesce the copies added for function livein's. Take 2008-03-10-RegAllocInfLoop.ll, the schedule looks like this after these copies are inserted:
      
      entry: 0x12049d0, LLVM BB @0x1201fd0, ID#0:
      Live Ins: %EAX %EDX %ECX
              %reg1031<def> = MOVPC32r 0
              %reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
              %reg1028<def> = MOV32rr %EAX
              %reg1029<def> = MOV32rr %EDX
              %reg1030<def> = MOV32rr %ECX
              %reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x1201910 + 0]
              %reg1025<def> = MOV32rr %reg1029
              %reg1026<def> = MOV32rr %reg1030
              %reg1024<def> = MOV32rr %reg1028
      
      The copies unnecessarily increase register pressure and it will end up requiring a physical register to be spilled.
      
      With -schedule-livein-copies:
      entry: 0x12049d0, LLVM BB @0x1201fa0, ID#0:
      Live Ins: %EAX %EDX %ECX
              %reg1031<def> = MOVPC32r 0
              %reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
              %reg1024<def> = MOV32rr %EAX
              %reg1025<def> = MOV32rr %EDX
              %reg1026<def> = MOV32rr %ECX
              %reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x12018e0 + 0]
      
      Much better!
      
      llvm-svn: 48307
      65e9d5f1
    • Ted Kremenek's avatar
      Changed CallRetValSymbol to SymbolConjured to allow "conjured" symbols to be... · e2f6d6cd
      Ted Kremenek authored
      Changed CallRetValSymbol to SymbolConjured to allow "conjured" symbols to be created for any expression, not just CallExprs.
      Added experimental support for conjuring symbols during assingments where the RHS is "unknown".  This allows more value tracking for path-sensitivity.
      Fixed bug in "assumption" logic when processing symbolic constraints; we would improperly mark constraints we didn't support as infeasible.
      
      llvm-svn: 48306
      e2f6d6cd
    • Duncan Sands's avatar
      Initial soft-float support for LegalizeTypes. I rewrote · 723849a1
      Duncan Sands authored
      the fcopysign expansion from LegalizeDAG to get rid of
      what seems to be a bug: the use of sign extension means
      that when copying the sign bit from an f32 to an f64,
      the upper 32 bits of the f64 (now an i64) are set, not
      just the top bit...  I also generalized it to work for
      any sized floating point types, and removed the bogosity:
        SDOperand Mask1 = (SrcVT == MVT::f64)
          ? DAG.getConstantFP(BitsToDouble(1ULL << 63), SrcVT)
          : DAG.getConstantFP(BitsToFloat(1U << 31), SrcVT);
        Mask1 = DAG.getNode(ISD::BIT_CONVERT, SrcNVT, Mask1);
      (here SrcNVT is an integer with the same size as SrcVT).
      As far as I can see this takes a 1 << 63, converts to
      a double, converts that to a floating point constant
      then converts that to an integer constant, ending up
      with... 1 << 63 as an integer constant!  So I just
      generate this integer constant directly.
      
      llvm-svn: 48305
      723849a1
    • Steve Naroff's avatar
      Minor aesthetic improvement (after I reviewed my last commit). · ffb5f9ad
      Steve Naroff authored
      llvm-svn: 48304
      ffb5f9ad
    • Steve Naroff's avatar
      Avoid using the "unnamed struct field" extension (enabled with... · 9f33bd2c
      Steve Naroff authored
      Avoid using the "unnamed struct field" extension (enabled with -fms-extensions). This feature/extension silently does the wrong thing in g++. As far as I can tell, g++ simply throws the field away entirely (note that it works fine with gcc). Since I am now always casting the object (for other reasons), accessing protected/public fields simply requires the cast refer to the defining class. This solution is simpler all around (thanks to Chris for suggesting it).
      
      llvm-svn: 48302
      9f33bd2c
    • Ted Kremenek's avatar
      Added generation of symbolic values for the return values of functions that have · 626bd2d3
      Ted Kremenek authored
      no summaries (useful for false-path pruning).
      
      llvm-svn: 48301
      626bd2d3
    • Ted Kremenek's avatar
      In GRSimpleVals, added the generation of symbolic values for the return values · 86f1d0cd
      Ted Kremenek authored
      of function calls. This is useful in pruning paths.
      
      llvm-svn: 48299
      86f1d0cd
    • Dan Gohman's avatar
      Change VirtRegMap's dump to dump to cerr, not DOUT, so that it · 34ae72c4
      Dan Gohman authored
      can be called from within a debuger without having -debug specified
      on the command-line.
      
      llvm-svn: 48298
      34ae72c4
    • Dan Gohman's avatar
      Fix typos in comments. · bf68f9fd
      Dan Gohman authored
      llvm-svn: 48297
      bf68f9fd
    • Dan Gohman's avatar
      Fix this test on hosts that don't have sse2. · f7492cf0
      Dan Gohman authored
      llvm-svn: 48296
      f7492cf0
    • Duncan Sands's avatar
      Fix typo. · c54fe97f
      Duncan Sands authored
      llvm-svn: 48295
      c54fe97f
    • Duncan Sands's avatar
      Don't try to extract an i32 from an f64. This · 87de65fc
      Duncan Sands authored
      getCopyToParts problem was noticed by the new
      LegalizeTypes infrastructure.  In order to avoid
      this kind of thing in the future I've added a
      check that EXTRACT_ELEMENT is only used with
      integers.  Once LegalizeTypes is up and running
      most likely BUILD_PAIR and EXTRACT_ELEMENT can
      be removed, in favour of using apints instead.
      
      llvm-svn: 48294
      87de65fc
    • Chris Lattner's avatar
      Update to reflect changes in parameter attribute api. · 28842b7c
      Chris Lattner authored
      llvm-svn: 48290
      28842b7c
    • Chris Lattner's avatar
      Reimplement the parameter attributes support, phase #1. hilights: · 8a923e7c
      Chris Lattner authored
      1. There is now a "PAListPtr" class, which is a smart pointer around
         the underlying uniqued parameter attribute list object, and manages
         its refcount.  It is now impossible to mess up the refcount.
      2. PAListPtr is now the main interface to the underlying object, and
         the underlying object is now completely opaque.
      3. Implementation details like SmallVector and FoldingSet are now no
         longer part of the interface.
      4. You can create a PAListPtr with an arbitrary sequence of
         ParamAttrsWithIndex's, no need to make a SmallVector of a specific 
         size (you can just use an array or scalar or vector if you wish).
      5. All the client code that had to check for a null pointer before
         dereferencing the pointer is simplified to just access the 
         PAListPtr directly.
      6. The interfaces for adding attrs to a list and removing them is a
         bit simpler.
      
      Phase #2 will rename some stuff (e.g. PAListPtr) and do other less 
      invasive changes.
      
      llvm-svn: 48289
      8a923e7c
    • Steve Naroff's avatar
      Use the "used" attribute. Without it, g++ removes all the meta-data:-( This... · b327e490
      Steve Naroff authored
      Use the "used" attribute. Without it, g++ removes all the meta-data:-( This doesn't happen when compiling straight C code.
      
      llvm-svn: 48287
      b327e490
    • Ted Kremenek's avatar
      Improved ExplodedGraph::Trim to only show nodes reachable from a reverse BFS · 576b76a7
      Ted Kremenek authored
      from the sources, and to try and generate only a single path from sources
      to roots.
      
      llvm-svn: 48286
      576b76a7
    • Chris Lattner's avatar
      no need to keep around this output. · ee8d960e
      Chris Lattner authored
      llvm-svn: 48285
      ee8d960e
    • Steve Naroff's avatar
      -Add missing visitor for ObjCIvarRefExpr. · 5d5efca4
      Steve Naroff authored
      -Wrap objc runtime calls with "extern "C"" (for now).
      
      llvm-svn: 48284
      5d5efca4
    • Evan Cheng's avatar
Loading