Skip to content
  1. Jan 17, 2012
  2. Jan 16, 2012
    • Tanya Lattner's avatar
      Add support for OpenCL 1.1 logical operations. · 20248226
      Tanya Lattner authored
      llvm-svn: 148254
      20248226
    • Eli Friedman's avatar
      Add some calls to MarkDeclarationReferenced, towards a point where every... · 2dfa7932
      Eli Friedman authored
      Add some calls to MarkDeclarationReferenced, towards a point where every declaration which is used is marked as used.
      
      llvm-svn: 148253
      2dfa7932
    • Eli Friedman's avatar
      Make the auto-detection hack for the iOS simulator set the target triple... · 5ceb74a7
      Eli Friedman authored
      Make the auto-detection hack for the iOS simulator set the target triple correctly.  Getting the target triple wrong mostly appears to work, but messes up in subtle cases; for example, we incorrectly conclude that fwrite is actually named fwrite$UNIX2003.  Also shuffles around the auto-detection code a bit to try and make it a bit more reliable.  Fixes <rdar://problem/10664848>.
      
      llvm-svn: 148249
      5ceb74a7
    • Fariborz Jahanian's avatar
      Fixes a crash during constant folding of a switch and case · 9c882f98
      Fariborz Jahanian authored
      statement which has an unscoped case inside it.
      Patch by Aaron Ballman
      
      llvm-svn: 148243
      9c882f98
    • 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
  3. Jan 15, 2012
    • Douglas Gregor's avatar
      Now that deserializing a definition of a C++ class/Objective-C · 3a5ae564
      Douglas Gregor authored
      class/Objective-C protocol suffices get all of the redeclarations of
      that declaration wired to the definition, we no longer need to record
      the identity of the definition in every declaration. Instead, just
      record a bit to indicate whether a particular declaration is the
      definition.
      
      llvm-svn: 148224
      3a5ae564
    • Douglas Gregor's avatar
      When deserializing the definition of a C++ class/ObjC class/ObjC · c03c52ea
      Douglas Gregor authored
      protocol, record the definition pointer in the canonical declaration
      for that entity, and then propagate that definition pointer from the
      canonical declaration to all other deserialized declarations. This
      approach works well even when deserializing declarations that didn't
      know about the original definition, which can occur with modules.
      
      A nice bonus from this definition-deserialization approach is that we
      no longer need update records when a definition is added, because the
      redeclaration chains ensure that the if any declaration is loaded, the
      definition will also get loaded.
      
      llvm-svn: 148223
      c03c52ea
    • Douglas Gregor's avatar
      Completely re-implement (de-)serialization of redeclaration · 358cd441
      Douglas Gregor authored
      chains, again. The prior implementation was very linked-list oriented, and
      the list-splicing logic was both fairly convoluted (when loading from
      multiple modules) and failed to preserve a reasonable ordering for the
      redeclaration chains.
      
      This new implementation uses a simpler strategy, where we store the
      ordered redeclaration chains in an array-like structure (indexed based
      on the first declaration), and use that ordering to add individual
      deserialized declarations to the end of the existing chain. That way,
      the chain mimics the ordering from its modules, and a bug somewhere is
      far less likely to result in a broken linked list.
      
      llvm-svn: 148222
      358cd441
    • Chandler Carruth's avatar
      Two variables had been added for an assert, but their values were · 5b15a9be
      Chandler Carruth authored
      re-computed rather than the variables be re-used just after the assert.
      Just use the variables since we have them already. Fixes an unused
      variable warning.
      
      Also fix an 80-column violation.
      
      llvm-svn: 148212
      5b15a9be
    • Richard Smith's avatar
      decltype(e) is type-dependent if e is instantiation-dependent. Scary but true. · bd153094
      Richard Smith authored
      Don't consider decltype(e) for an instantiation-dependent, but not
      type-dependent, e to be non-type-dependent but canonical(!).
      
      llvm-svn: 148210
      bd153094
    • Richard Smith's avatar
      Pedantic diagnostic correction: in C++, we have integral constant expressions, · 2ec4061e
      Richard Smith authored
      not integer constant expressions. In passing, fix the 'folding is an extension'
      diagnostic to not claim we're accepting the code, since that's not true in
      -pedantic-errors mode, and add this diagnostic to -Wgnu.
      
      llvm-svn: 148209
      2ec4061e
    • Richard Smith's avatar
      constexpr: casts to void* are allowed in constant expressions, don't set the · b19ac0d6
      Richard Smith authored
      designator invalid. (Since we can't read the value of such a pointer, this only
      affects the quality of diagnostics.)
      
      llvm-svn: 148208
      b19ac0d6
    • Eli Friedman's avatar
      Change linkage computation so it doesn't depend on FunctionDecl::isExternC or... · 839192fd
      Eli Friedman authored
      Change linkage computation so it doesn't depend on FunctionDecl::isExternC or VarDecl::isExternC, and instead queries what it actually cares about: whether the given declaration is inside an extern "C" context.  Fundamentally, figuring out whether a function/variable uses C linkage requires knowing the linkage, and the logic in FunctionDecl::isExternC and VarDecl::isExternC was getting it wrong.  Given that, fix FunctionDecl::isExternC and VarDecl::isExternC to use much simpler implementations that depend on the fixed linkage computation.
      
      Fixes a regression to test/SemaCXX/linkage.cpp caused by a new warning exposing the fact that the internal state was wrong.
      
      llvm-svn: 148207
      839192fd
  4. Jan 14, 2012
  5. Jan 13, 2012
Loading