Skip to content
  1. Feb 13, 2009
    • Mike Stump's avatar
      Move BlockDescriptorType into CGM. · 650c932d
      Mike Stump authored
      llvm-svn: 64451
      650c932d
    • Mike Stump's avatar
      80col. · 5b31ed3f
      Mike Stump authored
      llvm-svn: 64450
      5b31ed3f
    • Anders Carlsson's avatar
      Start warning about unknown attributes. · 6ee8a7da
      Anders Carlsson authored
      llvm-svn: 64447
      6ee8a7da
    • Anders Carlsson's avatar
      Add a new Ignored attribute type, and use it for may_alias. · b4f3134c
      Anders Carlsson authored
      llvm-svn: 64446
      b4f3134c
    • Anders Carlsson's avatar
      Add CodeGen support for the nodebug attribute. · 63784f4e
      Anders Carlsson authored
      llvm-svn: 64445
      63784f4e
    • Anders Carlsson's avatar
      Add sema support for the nodebug attribute. · 76187b4d
      Anders Carlsson authored
      llvm-svn: 64441
      76187b4d
    • Eli Friedman's avatar
      Initial implementation of arbitrary fixed-width integer types. · 1efaaeaa
      Eli Friedman authored
      Currently only used for 128-bit integers.
      
      Note that we can't use the fixed-width integer types for other integer 
      modes without other changes because glibc headers redefines (u)int*_t 
      and friends using the mode attribute.  For example, this means that uint64_t
      has to be compatible with unsigned __attribute((mode(DI))), and 
      uint64_t is currently defined to long long.  And I have a feeling we'll 
      run into issues if we try to define uint64_t as something which isn't 
      either long or long long.
      
      This doesn't get the alignment right in most cases, including 
      the 128-bit integer case; I'll file a PR shortly.  The gist of the issue 
      is that the targets don't really expose the information necessary to 
      figure out the alignment outside of the target description, so there's a 
      non-trivial amount of work involved in getting it working right.  That 
      said, the alignment used is conservative, so the only issue with the 
      current implementation is ABI compatibility.
      
      This makes it trivial to add some sort of "bitwidth" attribute to make 
      arbitrary-width integers; I'll do that in a followup.
      
      We could also use this for stuff like the following for compatibility 
      with gcc, but I have a feeling it would be a better idea for clang to be 
      consistent between C and C++ modes rather than follow gcc's example for 
      C mode.
      struct {unsigned long long x : 33;} x;
      unsigned long long a(void) {return x.x+1;}
      
      llvm-svn: 64434
      1efaaeaa
    • Ted Kremenek's avatar
      GRExprEngine: · 17d541d4
      Ted Kremenek authored
      - Add 'EvalBind', which will be used by 'EvalStore' to pull much of the value binding logic out of GRTransferFuncs.
      - Rename many cases of 'St' to 'state'.
      
      llvm-svn: 64426
      17d541d4
    • Douglas Gregor's avatar
      Add mangling for variadic functions and conversion functions · adb02014
      Douglas Gregor authored
      llvm-svn: 64425
      adb02014
    • Eli Friedman's avatar
      Fix gcc warning: gcc correctly notes that const-qualifying the return · 159a7cbc
      Eli Friedman authored
      type doesn't do anything.
      
      llvm-svn: 64424
      159a7cbc
    • Chris Lattner's avatar
      make "floating macro bubble" output of -emit-html much prettier: · 837b990c
      Chris Lattner authored
      only insert spaces between tokens if the code had them or if they 
      are actually required to avoid pasting.  This reuses the same
      logic as -E mode.
      
      llvm-svn: 64421
      837b990c
    • Chris Lattner's avatar
      factor token concatenation avoidance logic out of · 644d452d
      Chris Lattner authored
      PrintPreprocessedOutput into its own file.  No functionality change.
      
      llvm-svn: 64418
      644d452d
    • Douglas Gregor's avatar
      Tighten checking of the "overloadable" attribute. If any function by a · 633b7378
      Douglas Gregor authored
      given name in a given scope is marked as "overloadable", every
      function declaration and definition with that same name and in that
      same scope needs to have the "overloadable" attribute. Essentially,
      the "overloadable" attribute is not part of attribute merging, so it
      must be specified even for redeclarations. This keeps users from
      trying to be too sneaky for their own good:
      
        double sin(double) __attribute__((overloadable)); // too sneaky
        #include <math.h>
      
      Previously, this would have made "sin" overloadable, and therefore
      given it a mangled name. Now, we get an error inside math.h when we
      see a (re)declaration of "sin" that doesn't have the "overloadable"
      attribute.
      
      llvm-svn: 64414
      633b7378
    • Douglas Gregor's avatar
      Add basic support for C++ name mangling according to the Itanium C++ · 5fec5b04
      Douglas Gregor authored
      ABI to the CodeGen library. Since C++ code-generation is so
      incomplete, we can't exercise much of this mangling code. However, a
      few smoke tests show that it's doing the same thing as GCC. When C++
      codegen matures, we'll extend the ABI tester to verify name-mangling
      as well, and complete the implementation here.
      
      At this point, the major client of name mangling is in the uses of the
      new "overloadable" attribute in C, which allows overloading. Any
      "overloadable" function in C (or in an extern "C" block in C++) will
      be mangled the same way that the corresponding C++ function would be
      mangled.
      
      llvm-svn: 64413
      5fec5b04
    • Daniel Dunbar's avatar
      Honor attribute section on static block var decls. · 53bf7412
      Daniel Dunbar authored
      llvm-svn: 64411
      53bf7412
    • Mike Stump's avatar
      Fix limits.h for linux, as glibc does a #include_next unless · 6b63074d
      Mike Stump authored
      _GCC_LIMITS_H_ is defined, when __GNUC__ is defined.
      
      Also, we need to stay away from possible conflicts with header guards.
      We should use CLANG_ to prefix all header guards.
      
      llvm-svn: 64408
      6b63074d
  2. Feb 12, 2009
Loading