Skip to content
  1. Jan 11, 2010
    • Evan Cheng's avatar
      Select an OR with immediate as an ADD if the input bits are known zero. This... · 64d9f405
      Evan Cheng authored
      Select an OR with immediate as an ADD if the input bits are known zero. This allow the instruction to be 3address-fied if needed.
      
      llvm-svn: 93152
      64d9f405
    • David Greene's avatar
      · 206351a1
      David Greene authored
      Implement a feature (-vector-unaligned-mem) to allow targets to
      ignore alignment requirements for SIMD memory operands.  This
      is useful on architectures like the AMD 10h that do not trap on
      unaligned references if a status bit is twiddled at startup time.
      
      llvm-svn: 93151
      206351a1
    • Sebastian Redl's avatar
    • Victor Hernandez's avatar
      Respond to Chris' review: · 9ce5b513
      Victor Hernandez authored
      Make InsertDbgValueIntrinsic() and get Offset take and recieve a uint64_t.
      Get constness correct for getVariable() and getValue().
      
      llvm-svn: 93149
      9ce5b513
    • Zhongxing Xu's avatar
      Enhance ScanReachableSymbols::scan(). Now another OSAtomic test case passes. · e47550e4
      Zhongxing Xu authored
      The old test case has a little mistake.
      
      llvm-svn: 93148
      e47550e4
    • Chris Lattner's avatar
      add one more bitfield optimization, allowing clang to generate · 95188694
      Chris Lattner authored
      good code on PR4216:
      
      _test_bitfield:                                             ## @test_bitfield
      	orl	$32962, %edi
      	movl	$4294941946, %eax
      	andq	%rdi, %rax
      	ret
      
      instead of:
      
      _test_bitfield:
              movl    $4294941696, %ecx
              movl    %edi, %eax
              orl     $194, %edi
              orl     $32768, %eax
              andq    $250, %rdi
              andq    %rax, %rcx
              movq    %rdi, %rax
              orq     %rcx, %rax
              ret
      
      Evan is looking into the remaining andq+imm -> andl optimization.
      
      llvm-svn: 93147
      95188694
    • Zhongxing Xu's avatar
      Enhance SVals::getAsRegion: get the region that is converted to an integer. · cbbf8554
      Zhongxing Xu authored
      This with previous patch fixes a OSAtomic test case.
      
      llvm-svn: 93146
      cbbf8554
    • Chris Lattner's avatar
      Extend CanEvaluateZExtd to handle and/or/xor more aggressively in the · 0a854204
      Chris Lattner authored
      BitsToClear case.  This allows it to promote expressions which have an
      and/or/xor after the lshr, promoting cases like test2 (from PR4216) 
      and test3 (random extample extracted from a spec benchmark).
      
      clang now compiles the code in PR4216 into:
      
      _test_bitfield:                                             ## @test_bitfield
      	movl	%edi, %eax
      	orl	$194, %eax
      	movl	$4294902010, %ecx
      	andq	%rax, %rcx
      	orl	$32768, %edi
      	andq	$39936, %rdi
      	movq	%rdi, %rax
      	orq	%rcx, %rax
      	ret
      
      instead of:
      
      _test_bitfield:                                             ## @test_bitfield
      	movl	%edi, %eax
      	orl	$194, %eax
      	movl	$4294902010, %ecx
      	andq	%rax, %rcx
      	shrl	$8, %edi
      	orl	$128, %edi
      	shlq	$8, %rdi
      	andq	$39936, %rdi
      	movq	%rdi, %rax
      	orq	%rcx, %rax
      	ret
      
      which is still not great, but is progress.
      
      llvm-svn: 93145
      0a854204
    • Chris Lattner's avatar
      Remove the dead TD argument to CanEvaluateZExtd, and add a · 12bd8992
      Chris Lattner authored
      new BitsToClear result which allows us to start promoting
      expressions that end with a lshr-by-constant.  This is
      conservatively correct and better than what we had before
      (see testcases) but still needs to be extended further.
      
      llvm-svn: 93144
      12bd8992
    • Chris Lattner's avatar
      improve comments, remove dead TD argument to CanEvaluateSExtd. · 172630ab
      Chris Lattner authored
      llvm-svn: 93143
      172630ab
    • Chris Lattner's avatar
      add a TODO for a perf improvement in LexIdentifier. · 21d9b9a9
      Chris Lattner authored
      llvm-svn: 93141
      21d9b9a9
    • Ted Kremenek's avatar
      Switch RegionStore over to using <BaseRegion+raw offset> to store · be909b5e
      Ted Kremenek authored
      value bindings.  Along with a small change to OSAtomicChecker, this
      resolves <rdar://problem/7527292> and resolves some long-standing
      issues with how values can be bound to the same physical address by
      not have the same "key".  This change is only a beginning; logically
      RegionStore needs to better handle loads from addresses where the
      stored value is larger/smaller/different type than the loaded value.
      We handle these cases in an approximate fashion now (via
      CastRetrievedVal and help in SimpleSValuator), but it could be made
      much smarter.
      
      llvm-svn: 93137
      be909b5e
    • Ted Kremenek's avatar
      Preliminary reworking of value-binding logic in RegionStore: · 8e994a28
      Ted Kremenek authored
      (1) Introduce a new 'BindingKey' class to match 'BindingValue'.  This
      gives us the flexibility to change the current key value from 'const
      MemRegion*' to something more interesting.
      
      (2) Rework additions/removals/lookups from the store to use new
      'Remove', 'Add', 'Lookup' utility methods.
      
      No "real" functionality change; just prep work and abstraction.
      
      llvm-svn: 93136
      8e994a28
    • Alexis Hunt's avatar
      Do not parse hexadecimal floating point literals in C++0x mode because they are · 91b78382
      Alexis Hunt authored
      incompatible with user-defined literals, specifically with the following form:
      
        0x1p+1
      
      The preprocessing-number token extends only as far as the 'p'; the '+' is not
      included. Previously we could get away with this extension as p was an invalid
      suffix, but now with user-defined literals, 'p' might well be a valid suffix
      and we are forced to consider it as such.
      
      This patch also adds a warning in non-0x C++ modes telling the user that
      this extension is incompatible with C++0x that is enabled by default
      (previously and with other languages, we warn only with a compliance
      option such as -pedantic).
      
      llvm-svn: 93135
      91b78382
    • Douglas Gregor's avatar
      Improve code completion by introducing patterns for the various C and · 504a6ae8
      Douglas Gregor authored
      C++ grammatical constructs that show up in top-level (namespace-level)
      declarations, member declarations, template declarations, statements,
      expressions, conditions, etc. For example, we now provide a pattern
      for
      
        static_cast<type>(expr)
      
      when we can have an expression, or
      
        using namespace identifier;
      
      when we can have a using directive.
      
      Also, improves the results of code completion at the beginning of a
      top-level declaration. Previously, we would see value names (function
      names, global variables, etc.); now we see types, namespace names,
      etc., but no values.
      
      llvm-svn: 93134
      504a6ae8
  2. Jan 10, 2010
Loading