Skip to content
  1. Mar 13, 2009
    • Evan Cheng's avatar
      Fix some significant problems with constant pools that resulted in unnecessary... · 1fb8aedd
      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
      1fb8aedd
    • Evan Cheng's avatar
      Unbreak build. · bd561627
      Evan Cheng authored
      llvm-svn: 66874
      bd561627
    • Chris Lattner's avatar
      split buffer management and diagnostic printing out of the tblgen · 8db9bc7e
      Chris Lattner authored
      lexer into its own TGSourceMgr class.
      
      llvm-svn: 66873
      8db9bc7e
    • Owen Anderson's avatar
      Convert VirtRegMap to a MachineFunctionPass. · d37ddf5b
      Owen Anderson authored
      llvm-svn: 66870
      d37ddf5b
    • Chris Lattner's avatar
      generalize the previous code to use the full generality of LEA · 99cc1337
      Chris Lattner authored
      for i32/i64 expressions (we could also do i16 on cpus where
      i16 lea is fast, but I didn't add this).  On the example, we now
      generate:
      
      _test:
      	movl	4(%esp), %eax
      	cmpl	$42, (%eax)
      	setl	%al
      	movzbl	%al, %eax
      	leal	4(%eax,%eax,8), %eax
      	ret
      
      instead of:
      
      _test:
      	movl	4(%esp), %eax
      	cmpl	$41, (%eax)
      	movl	$4, %ecx
      	movl	$13, %eax
      	cmovg	%ecx, %eax
      	ret
      
      llvm-svn: 66869
      99cc1337
    • Chris Lattner's avatar
      optimize the case of cond ? 42 : 41 and friends. This compiles the · 4be6df5d
      Chris Lattner authored
      example to:
      
      _test:
      	movl	4(%esp), %eax
      	cmpl	$41, (%eax)
      	setg	%al
      	movzbl	%al, %eax
      	orl	$4294967294, %eax
      	ret
      
      instead of:
      
              movl    4(%esp), %eax
              cmpl    $41, (%eax)
      	movl	$4294967294, %ecx
      	movl	$4294967295, %eax
      	cmova	%ecx, %eax
      	ret
      
      which is smaller in code size and faster. rdar://6668608
      
      llvm-svn: 66868
      4be6df5d
    • Bill Wendling's avatar
      Oops...I committed too much. · fa54bc20
      Bill Wendling authored
      llvm-svn: 66867
      fa54bc20
    • Bill Wendling's avatar
      Temporarily XFAIL this test. · b02eadf6
      Bill Wendling authored
      llvm-svn: 66866
      b02eadf6
    • Dan Gohman's avatar
      Enhance address-mode folding of ISD::ADD to handle cases where the · a1d92423
      Dan Gohman authored
      operands can't both be fully folded at the same time. For example,
      in the included testcase, a global variable is being added with
      an add of two values. The global variable wants RIP-relative
      addressing, so it can't share the address with another base
      register, but it's still possible to fold the initial add.
      
      llvm-svn: 66865
      a1d92423
    • Chris Lattner's avatar
      implement a new -fprint-source-range-info option, which · 44219f3e
      Chris Lattner authored
      defaults to off.  When enabled, it emits range info along
      with the file/line/col information for a diagnostic.  This
      allows tools that textually parse the output of clang to know
      where the ranges are, even if they span multiple lines.  For 
      example, with:
      
      $ clang exprs.c -fprint-source-range-info
      
      We now produce:
      
      exprs.c:21:11:{21:12-21:13}: warning: use of unary operator that may be intended as compound assignment (+=)
            var =+ 5;  // expected-warning {{use of unary operator that may be intended as compound assignment (+=)}}
                ^~
      exprs.c:22:11:{22:12-22:13}: warning: use of unary operator that may be intended as compound assignment (-=)
            var =- 5;  // expected-warning {{use of unary operator that may be intended as compound assignment (-=)}}
                ^~
      exprs.c:36:13:{36:3-36:12}: error: assignment to cast is illegal, lvalue casts are not supported
        (float*)X = P;   // expected-error {{assignment to cast is illegal, lvalue casts are not supported}}
        ~~~~~~~~~ ^
      exprs.c:41:4:{41:3-41:4}: error: called object type 'int' is not a function or function pointer
        X();  // expected-error {{called object type 'int' is not a function or function pointer}}
        ~^
      exprs.c:45:15:{45:8-45:14}{45:17-45:24}: error: invalid operands to binary expression ('int *' and '_Complex float')
         P = (P-42) + Gamma*4;  // expected-error {{invalid operands to binary expression ('int *' and '_Complex float')}}
             ~~~~~~ ^ ~~~~~~~
      exprs.c:61:7:{61:16-61:22}: error: invalid application of '__alignof' to bitfield
        R = __alignof(P->x);  // expected-error {{invalid application of '__alignof' to bitfield}} expected-warning {{extension used}}
            ^        ~~~~~~
      
      Note the range info after the column in the initial diagnostic.
      
      This is obviously really annoying if you're not a tool parsing the 
      output of clang, which is why it is off by default.
      
      llvm-svn: 66862
      44219f3e
    • Chris Lattner's avatar
      fix typo · f0db0aed
      Chris Lattner authored
      llvm-svn: 66860
      f0db0aed
    • Dale Johannesen's avatar
      Fix one more place where debug info affected · cecfa6e0
      Dale Johannesen authored
      codegen (speculative execution).
      
      llvm-svn: 66859
      cecfa6e0
    • Daniel Dunbar's avatar
      Driver: Ignore empty arguments. · 0f35a026
      Daniel Dunbar authored
      llvm-svn: 66858
      0f35a026
    • Daniel Dunbar's avatar
      Driver: Handle "immediate" options. · 5e0f6af1
      Daniel Dunbar authored
      Also, add some FIXMEs, improve doxygen & comments.
      
      llvm-svn: 66857
      5e0f6af1
    • Fariborz Jahanian's avatar
      Fix test. · 54e6d924
      Fariborz Jahanian authored
      llvm-svn: 66856
      54e6d924
    • Ted Kremenek's avatar
      Update checker build. · 4d4d2277
      Ted Kremenek authored
      llvm-svn: 66855
      4d4d2277
    • Fariborz Jahanian's avatar
      Fixed an ir-gen bug related to strong-cast generation of · 1b074a3e
      Fariborz Jahanian authored
      source being a non-pointer.
      
      llvm-svn: 66854
      1b074a3e
    • Mike Stump's avatar
      Fix spelling error, and add target triplet to header. · a1e61933
      Mike Stump authored
      llvm-svn: 66853
      a1e61933
    • Douglas Gregor's avatar
      Improve the representation of operator expressions like "x + y" within · d2b7ef6e
      Douglas Gregor authored
      C++ templates. In particular, keep track of the overloaded operators
      that are visible from the template definition, so that they can be
      merged with those operators visible via argument-dependent lookup at
      instantiation time. 
      
      Refactored the lookup routines for argument-dependent lookup and for
      operator name lookup, so they can be called without immediately adding
      the results to an overload set.
      
      Instantiation of these expressions is completely wrong. I'll work on
      that next.
      
      llvm-svn: 66851
      d2b7ef6e
    • Chris Lattner's avatar
      b858c0eb
    • Mike Stump's avatar
      When testing with VERBOSE=0, report results in the ISO format. We · 39eaa7bc
      Mike Stump authored
      include the triplet so that people that run multiple targets in
      parallel, say i386 and x86_64 can distinguish between the two.
      
      llvm-svn: 66849
      39eaa7bc
    • Daniel Dunbar's avatar
      ccc/Driver: Mark {dump{machine,specs,version}, · 34c41871
      Daniel Dunbar authored
      print-{multi-{directory,lib,os-directory}, search-dirs} as unsupported
      instead of handling separately.
      
      llvm-svn: 66848
      34c41871
    • Chris Lattner's avatar
      Eliminate a 9640 byte static mutable initialized data item by moving it · 0bf18690
      Chris Lattner authored
      to the stack.  This shrinks all llvm tools by 9k, and improves reentrancy.
      
      llvm-svn: 66847
      0bf18690
    • Argyrios Kyrtzidis's avatar
      Bring in std::string to fix compilation on GCC 4.3 · c3e39c01
      Argyrios Kyrtzidis authored
      llvm-svn: 66846
      c3e39c01
    • Chris Lattner's avatar
      static functions don't need an anonymous namespace. · 91702096
      Chris Lattner authored
      llvm-svn: 66845
      91702096
    • Daniel Dunbar's avatar
      Driver: Determine which compilation stages to run. · bfeec744
      Daniel Dunbar authored
      llvm-svn: 66844
      bfeec744
    • Dan Gohman's avatar
      Fix a typo in a comment. · a19c662a
      Dan Gohman authored
      llvm-svn: 66843
      a19c662a
    • Ted Kremenek's avatar
      Use the correct data structures! · e413a760
      Ted Kremenek authored
      ExplodedGraph::TrimGraph:
      - Just do a DFS both ways instead of BFS-DFS. We're just determining what subset
        of the nodes are reachable from the root and reverse-reachable from the bug
        nodes.  DFS is more efficient for this task.
        
      BugReporter:
      - MakeReportGraph: Do a reverse-BFS instead of a reverse-DFS to determine the
        approximate shortest path through the simulation graph. We were seeing some
        weird cases where too many loops were being reported for simple bugs. Possibly
        we will need to replace this with actually computing the shortest path in
        terms of line numbers.
      
      llvm-svn: 66842
      e413a760
    • Dale Johannesen's avatar
      Previous debug info fix to this code wasn't quite · ed6f5a82
      Dale Johannesen authored
      right; did the wrong thing when there are exactly 11
      non-debug instructions, followed by debug info.
      Remove a FIXME since it's apparently been fixed along the way.
      
      llvm-svn: 66840
      ed6f5a82
    • Gabor Greif's avatar
      cosmetic change, in preparation of future change · af76c34b
      Gabor Greif authored
      llvm-svn: 66839
      af76c34b
    • Evan Cheng's avatar
      Add this test back. · 50a839e6
      Evan Cheng authored
      llvm-svn: 66838
      50a839e6
  2. Mar 12, 2009
Loading