Skip to content
  1. Jan 24, 2012
  2. Jan 21, 2012
  3. Jan 20, 2012
  4. Jan 18, 2012
  5. Jan 17, 2012
  6. Jan 16, 2012
    • David Chisnall's avatar
      Some improvements to the handling of C11 atomic types: · fa35df62
      David Chisnall authored
      - Add atomic-to/from-nonatomic cast types
      - Emit atomic operations for arithmetic on atomic types
      - Emit non-atomic stores for initialisation of atomic types, but atomic stores and loads for every other store / load
      - Add a __atomic_init() intrinsic which does a non-atomic store to an _Atomic() type.  This is needed for the corresponding C11 stdatomic.h function.
      - Enables the relevant __has_feature() checks.  The feature isn't 100% complete yet, but it's done enough that we want people testing it.
      
      Still to do:
      
      - Make the arithmetic operations on atomic types (e.g. Atomic(int) foo = 1; foo++;) use the correct LLVM intrinsic if one exists, not a loop with a cmpxchg.
      - Add a signal fence builtin
      - Properly set the fenv state in atomic operations on floating point values
      - Correctly handle things like _Atomic(_Complex double) which are too large for an atomic cmpxchg on some platforms (this requires working out what 'correctly' means in this context)
      - Fix the many remaining corner cases
      
      llvm-svn: 148242
      fa35df62
    • David Blaikie's avatar
      Refactor variables unused under non-assert builds. · ca043229
      David Blaikie authored
      llvm-svn: 148229
      ca043229
  7. Jan 14, 2012
  8. Jan 13, 2012
  9. Jan 12, 2012
  10. Jan 11, 2012
  11. Jan 10, 2012
  12. Jan 07, 2012
  13. Jan 06, 2012
    • Ted Kremenek's avatar
      [analyzer] Make the entries in 'Environment' context-sensitive by making entries map from · 632e3b7e
      Ted Kremenek authored
      (Stmt*,LocationContext*) pairs to SVals instead of Stmt* to SVals.
      
      This is needed to support basic IPA via inlining.  Without this, we cannot tell
      if a Stmt* binding is part of the current analysis scope (StackFrameContext) or
      part of a parent context.
      
      This change introduces an uglification of the use of getSVal(), and thus takes
      two steps forward and one step back.  There are also potential performance implications
      of enlarging the Environment.  Both can be addressed going forward by refactoring the
      APIs and optimizing the internal representation of Environment.  This patch
      mainly introduces the functionality upon when we want to build upon (and clean up).
      
      llvm-svn: 147688
      632e3b7e
  14. Jan 05, 2012
    • Anna Zaks's avatar
      [analyzer] Be less pessimistic about invalidation of global variables · 8158ef0d
      Anna Zaks authored
      as a result of a call.
      
      Problem:
      Global variables, which come in from system libraries should not be
      invalidated by all calls. Also, non-system globals should not be
      invalidated by system calls.
      
      Solution:
      The following solution to invalidation of globals seems flexible enough
      for taint (does not invalidate stdin) and should not lead to too
      many false positives. We split globals into 3 classes:
      
      * immutable - values are preserved by calls (unless the specific
      global is passed in as a parameter):
           A :  Most system globals and const scalars
      
      * invalidated by functions defined in system headers:
           B: errno
      
      * invalidated by all other functions (note, these functions may in
      turn contain system calls):
           B: errno
           C: all other globals (which are not in A nor B)
      
      llvm-svn: 147569
      8158ef0d
    • Ted Kremenek's avatar
      Fix 80 col violations. · 778d2bb8
      Ted Kremenek authored
      llvm-svn: 147566
      778d2bb8
  15. Jan 04, 2012
Loading