diff options
| author | Ed Schouten <ed@FreeBSD.org> | 2009-06-06 08:21:31 +0000 | 
|---|---|---|
| committer | Ed Schouten <ed@FreeBSD.org> | 2009-06-06 08:21:31 +0000 | 
| commit | 37f6c480c696a4a72c1701ee54624cc807aa80ba (patch) | |
| tree | 06d57bb7679a2140aef96db7105a0bd5f16a4358 /include | |
| parent | 2659aeb5e51fe27d24bbffad0d1851b39fed5e43 (diff) | |
Diffstat (limited to 'include')
| -rw-r--r-- | include/clang/AST/ASTContext.h | 7 | ||||
| -rw-r--r-- | include/clang/AST/Builtins.def | 32 | ||||
| -rw-r--r-- | include/clang/AST/Decl.h | 16 | ||||
| -rw-r--r-- | include/clang/AST/DeclObjC.h | 1 | ||||
| -rw-r--r-- | include/clang/AST/DeclTemplate.h | 67 | ||||
| -rw-r--r-- | include/clang/AST/ExprCXX.h | 9 | ||||
| -rw-r--r-- | include/clang/Basic/DiagnosticFrontendKinds.td | 3 | ||||
| -rw-r--r-- | include/clang/Basic/DiagnosticParseKinds.td | 2 | ||||
| -rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 2 | ||||
| -rw-r--r-- | include/clang/Basic/LangOptions.h | 3 | ||||
| -rw-r--r-- | include/clang/Basic/TargetInfo.h | 6 | ||||
| -rw-r--r-- | include/clang/Driver/Options.def | 8 | ||||
| -rw-r--r-- | include/clang/Frontend/CompileOptions.h | 4 | ||||
| -rw-r--r-- | include/clang/Frontend/TextDiagnosticPrinter.h | 7 | ||||
| -rw-r--r-- | include/clang/Parse/Action.h | 21 | ||||
| -rw-r--r-- | include/clang/Parse/Parser.h | 1 | 
16 files changed, 147 insertions, 42 deletions
diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h index e99e9f2b18f3c..cad5487ea374f 100644 --- a/include/clang/AST/ASTContext.h +++ b/include/clang/AST/ASTContext.h @@ -539,11 +539,16 @@ public:    void CollectObjCIvars(const ObjCInterfaceDecl *OI,                          llvm::SmallVectorImpl<FieldDecl*> &Fields); -   + +  void ShallowCollectObjCIvars(const ObjCInterfaceDecl *OI, +                               llvm::SmallVectorImpl<ObjCIvarDecl*> &Ivars, +                               bool CollectSynthesized = true);    void CollectSynthesizedIvars(const ObjCInterfaceDecl *OI,                                 llvm::SmallVectorImpl<ObjCIvarDecl*> &Ivars);    void CollectProtocolSynthesizedIvars(const ObjCProtocolDecl *PD,                                 llvm::SmallVectorImpl<ObjCIvarDecl*> &Ivars); +  unsigned CountSynthesizedIvars(const ObjCInterfaceDecl *OI); +  unsigned CountProtocolSynthesizedIvars(const ObjCProtocolDecl *PD);    //===--------------------------------------------------------------------===//    //                            Type Operators diff --git a/include/clang/AST/Builtins.def b/include/clang/AST/Builtins.def index 11f3264faa2d2..c2f4061c5d789 100644 --- a/include/clang/AST/Builtins.def +++ b/include/clang/AST/Builtins.def @@ -332,25 +332,31 @@ BUILTIN(__sync_fetch_and_max, "ii*i", "n")  BUILTIN(__sync_fetch_and_umin, "UiUi*Ui", "n")  BUILTIN(__sync_fetch_and_umax, "UiUi*Ui", "n") -// Builtin library functions -LIBBUILTIN(alloca, "v*z",         "f",     "stdlib.h") +// C99 library functions +// C99 stdlib.h  LIBBUILTIN(calloc, "v*zz",        "f",     "stdlib.h")  LIBBUILTIN(malloc, "v*z",         "f",     "stdlib.h")  LIBBUILTIN(realloc, "v*v*z",      "f",     "stdlib.h") +// C99 string.h  LIBBUILTIN(memcpy, "v*v*vC*z",    "f",     "string.h")  LIBBUILTIN(memmove, "v*v*vC*z",   "f",     "string.h") -LIBBUILTIN(memset, "v*v*iz",      "f",     "string.h") +LIBBUILTIN(strcpy, "c*c*cC*",     "f",     "string.h") +LIBBUILTIN(strncpy, "c*c*cC*z",   "f",     "string.h")  LIBBUILTIN(strcat, "c*c*cC*",     "f",     "string.h") +LIBBUILTIN(strncat, "c*c*cC*z",   "f",     "string.h") +LIBBUILTIN(strxfrm, "zc*cC*z",    "f",     "string.h") +LIBBUILTIN(memchr, "v*vC*iz",     "f",     "string.h")  LIBBUILTIN(strchr, "c*cC*i",      "f",     "string.h") -LIBBUILTIN(strcpy, "c*c*cC*",     "f",     "string.h")  LIBBUILTIN(strcspn, "zcC*cC*",    "f",     "string.h") -LIBBUILTIN(strlen, "zcC*",        "f",     "string.h") -LIBBUILTIN(strncat, "c*c*cC*z",   "f",     "string.h") -LIBBUILTIN(strncpy, "c*c*cC*z",   "f",     "string.h")  LIBBUILTIN(strpbrk, "c*cC*cC*",   "f",     "string.h")  LIBBUILTIN(strrchr, "c*cC*i",     "f",     "string.h")  LIBBUILTIN(strspn, "zcC*cC*",     "f",     "string.h")  LIBBUILTIN(strstr, "c*cC*cC*",    "f",     "string.h") +LIBBUILTIN(strtok, "c*c*cC*",     "f",     "string.h") +LIBBUILTIN(memset, "v*v*iz",      "f",     "string.h") +LIBBUILTIN(strerror, "c*i",       "f",     "string.h") +LIBBUILTIN(strlen, "zcC*",        "f",     "string.h") +// C99 stdio.h  LIBBUILTIN(printf, "icC*.",       "fp:0:", "stdio.h")  LIBBUILTIN(fprintf, "iP*cC*.",    "fp:1:", "stdio.h")  LIBBUILTIN(snprintf, "ic*zcC*.",  "fp:2:", "stdio.h") @@ -360,6 +366,18 @@ LIBBUILTIN(vfprintf, "i.",        "fP:1:", "stdio.h")  LIBBUILTIN(vsnprintf, "ic*zcC*a", "fP:2:", "stdio.h")  LIBBUILTIN(vsprintf, "ic*cC*a",   "fP:1:", "stdio.h") +// Non-C library functions +// FIXME: Non-C-standard stuff shouldn't be builtins in non-GNU mode! +LIBBUILTIN(alloca, "v*z",         "f",     "stdlib.h") +// POSIX string.h +LIBBUILTIN(stpcpy, "c*c*cC*",     "f",     "string.h") +LIBBUILTIN(stpncpy, "c*c*cC*z",   "f",     "string.h") +LIBBUILTIN(strdup, "c*cC*",       "f",     "string.h") +LIBBUILTIN(strndup, "c*cC*z",     "f",     "string.h") +// POSIX strings.h +LIBBUILTIN(index, "c*cC*i",       "f",     "strings.h") +LIBBUILTIN(rindex, "c*cC*i",      "f",     "strings.h") +  // FIXME: This type isn't very correct, it should be  //   id objc_msgSend(id, SEL)  // but we need new type letters for that. diff --git a/include/clang/AST/Decl.h b/include/clang/AST/Decl.h index e134aed73d770..7440e7b5f1508 100644 --- a/include/clang/AST/Decl.h +++ b/include/clang/AST/Decl.h @@ -515,10 +515,22 @@ public:      objcDeclQualifier = QTVal;    } -  const Expr *getDefaultArg() const { return DefaultArg; } -  Expr *getDefaultArg() { return DefaultArg; } +  const Expr *getDefaultArg() const {  +    assert(!hasUnparsedDefaultArg() && "Default argument is not yet parsed!"); +    return DefaultArg;  +  } +  Expr *getDefaultArg() {  +    assert(!hasUnparsedDefaultArg() && "Default argument is not yet parsed!"); +    return DefaultArg;  +  }    void setDefaultArg(Expr *defarg) { DefaultArg = defarg; } +  /// hasDefaultArg - Determines whether this parameter has a default argument, +  /// either parsed or not. +  bool hasDefaultArg() const { +    return DefaultArg != 0; +  } +      /// hasUnparsedDefaultArg - Determines whether this parameter has a    /// default argument that has not yet been parsed. This will occur    /// during the processing of a C++ class whose member functions have diff --git a/include/clang/AST/DeclObjC.h b/include/clang/AST/DeclObjC.h index 6e89a7ae7bc9f..3943ddc19638c 100644 --- a/include/clang/AST/DeclObjC.h +++ b/include/clang/AST/DeclObjC.h @@ -330,6 +330,7 @@ public:    // Get the local instance/class method declared in this interface.    ObjCMethodDecl *getInstanceMethod(ASTContext &Context, Selector Sel) const;    ObjCMethodDecl *getClassMethod(ASTContext &Context, Selector Sel) const; +  ObjCIvarDecl *getIvarDecl(ASTContext &Context, IdentifierInfo *Id) const;    ObjCMethodDecl *    getMethod(ASTContext &Context, Selector Sel, bool isInstance) const { diff --git a/include/clang/AST/DeclTemplate.h b/include/clang/AST/DeclTemplate.h index 226af3411d551..d1899006cc82f 100644 --- a/include/clang/AST/DeclTemplate.h +++ b/include/clang/AST/DeclTemplate.h @@ -203,6 +203,9 @@ public:    /// Get the position of the template parameter within its parameter list.    unsigned getPosition() const { return Position; } +   +  /// Get the index of the template parameter within its parameter list. +  unsigned getIndex() const { return Position; }  };  /// TemplateTypeParmDecl - Declaration of a template type parameter, @@ -299,7 +302,8 @@ public:    using TemplateParmPosition::getDepth;    using TemplateParmPosition::getPosition; - +  using TemplateParmPosition::getIndex; +        /// \brief Determine whether this template parameter has a default    /// argument.    bool hasDefaultArgument() const { return DefaultArgument; } @@ -350,7 +354,8 @@ public:    using TemplateParmPosition::getDepth;    using TemplateParmPosition::getPosition; - +  using TemplateParmPosition::getIndex; +        /// \brief Determine whether this template parameter has a default    /// argument.    bool hasDefaultArgument() const { return DefaultArgument; } @@ -390,20 +395,21 @@ class TemplateArgument {  public:    /// \brief The type of template argument we're storing.    enum ArgKind { +    Null = 0,      /// The template argument is a type. It's value is stored in the      /// TypeOrValue field. -    Type = 0, +    Type = 1,      /// The template argument is a declaration -    Declaration = 1, +    Declaration = 2,      /// The template argument is an integral value stored in an llvm::APSInt. -    Integral = 2, +    Integral = 3,      /// The template argument is a value- or type-dependent expression      /// stored in an Expr*. -    Expression = 3 +    Expression = 4    } Kind;    /// \brief Construct an empty, invalid template argument. -  TemplateArgument() : TypeOrValue(0), StartLoc(), Kind(Type) { } +  TemplateArgument() : TypeOrValue(0), StartLoc(), Kind(Null) { }    /// \brief Construct a template type argument.    TemplateArgument(SourceLocation Loc, QualType T) : Kind(Type) { @@ -484,6 +490,9 @@ public:    /// \brief Return the kind of stored template argument.    ArgKind getKind() const { return Kind; } +  /// \brief Determine whether this template argument has no value. +  bool isNull() const { return Kind == Null; } +      /// \brief Retrieve the template argument as a type.    QualType getAsType() const {      if (Kind != Type) @@ -519,6 +528,12 @@ public:      return QualType::getFromOpaquePtr(Integer.Type);    } +  void setIntegralType(QualType T) { +    assert(Kind == Integral &&  +           "Cannot set the integral type of a non-integral template argument"); +    Integer.Type = T.getAsOpaquePtr(); +  }; +    /// \brief Retrieve the template argument as an expression.    Expr *getAsExpr() const {      if (Kind != Expression) @@ -534,6 +549,9 @@ public:    void Profile(llvm::FoldingSetNodeID &ID) const {      ID.AddInteger(Kind);      switch (Kind) { +    case Null: +      break; +              case Type:        getAsType().Profile(ID);        break; @@ -555,6 +573,22 @@ public:    }  }; +/// \brief A helper class for making template argument lists. +class TemplateArgumentListBuilder { +  llvm::SmallVector<TemplateArgument, 16> Args; + +  ASTContext &Context; +public: +  TemplateArgumentListBuilder(ASTContext &Context) : Context(Context) { } +   +  // FIXME: Should use the  index array size. +  size_t size() const { return Args.size(); } +  size_t flatSize() const { return Args.size(); } + +  void push_back(const TemplateArgument& Arg); +  TemplateArgument *getFlatArgumentList() { return Args.data(); } +}; +  /// \brief A template argument list.  ///  /// FIXME: In the future, this class will be extended to support @@ -571,12 +605,10 @@ class TemplateArgumentList {    /// argument list.    unsigned NumArguments; -  public:    TemplateArgumentList(ASTContext &Context, -                       TemplateArgument *TemplateArgs, -                       unsigned NumTemplateArgs, -                       bool CopyArgs); +                       TemplateArgumentListBuilder &Builder, +                       bool CopyArgs, bool FlattenArgs);    ~TemplateArgumentList(); @@ -660,14 +692,13 @@ protected:    ClassTemplateSpecializationDecl(ASTContext &Context, Kind DK,                                    DeclContext *DC, SourceLocation L,                                    ClassTemplateDecl *SpecializedTemplate, -                                  TemplateArgument *TemplateArgs, -                                  unsigned NumTemplateArgs); +                                  TemplateArgumentListBuilder &Builder);  public:    static ClassTemplateSpecializationDecl *    Create(ASTContext &Context, DeclContext *DC, SourceLocation L,           ClassTemplateDecl *SpecializedTemplate, -         TemplateArgument *TemplateArgs, unsigned NumTemplateArgs, +         TemplateArgumentListBuilder &Builder,           ClassTemplateSpecializationDecl *PrevDecl);    /// \brief Retrieve the template that this specialization specializes. @@ -730,11 +761,9 @@ class ClassTemplatePartialSpecializationDecl                                           DeclContext *DC, SourceLocation L,                                           TemplateParameterList *Params,                                           ClassTemplateDecl *SpecializedTemplate, -                                         TemplateArgument *TemplateArgs, -                                         unsigned NumTemplateArgs) +                                         TemplateArgumentListBuilder &Builder)      : ClassTemplateSpecializationDecl(Context, ClassTemplatePartialSpecialization, -                                      DC, L, SpecializedTemplate, TemplateArgs, -                                      NumTemplateArgs), +                                      DC, L, SpecializedTemplate, Builder),        TemplateParams(Params) { }  public: @@ -742,7 +771,7 @@ public:    Create(ASTContext &Context, DeclContext *DC, SourceLocation L,           TemplateParameterList *Params,           ClassTemplateDecl *SpecializedTemplate, -         TemplateArgument *TemplateArgs, unsigned NumTemplateArgs, +         TemplateArgumentListBuilder &Builder,           ClassTemplatePartialSpecializationDecl *PrevDecl);    /// Get the list of template parameters diff --git a/include/clang/AST/ExprCXX.h b/include/clang/AST/ExprCXX.h index 53386231a03fa..e44ccca0bd74e 100644 --- a/include/clang/AST/ExprCXX.h +++ b/include/clang/AST/ExprCXX.h @@ -1023,14 +1023,17 @@ class CXXExprWithTemporaries : public Expr {    CXXTemporary **Temps;    unsigned NumTemps; -  CXXExprWithTemporaries(Expr *subexpr, CXXTemporary **temps,  -                         unsigned numtemps); +  bool DestroyTemps; +   +  CXXExprWithTemporaries(Expr *SubExpr, CXXTemporary **Temps,  +                         unsigned NumTemps, bool DestroyTemps);    ~CXXExprWithTemporaries();  public:    static CXXExprWithTemporaries *Create(ASTContext &C, Expr *SubExpr,                                          CXXTemporary **Temps,  -                                        unsigned NumTemps); +                                        unsigned NumTemps, +                                        bool DestroyTems);    void Destroy(ASTContext &C);    unsigned getNumTemporaries() const { return NumTemps; } diff --git a/include/clang/Basic/DiagnosticFrontendKinds.td b/include/clang/Basic/DiagnosticFrontendKinds.td index 1bc296babd3bf..ae5246d7929a5 100644 --- a/include/clang/Basic/DiagnosticFrontendKinds.td +++ b/include/clang/Basic/DiagnosticFrontendKinds.td @@ -130,6 +130,9 @@ def warn_pch_compiler_options_mismatch : Error<  def warn_pch_access_control : Error<      "C++ access control was %select{disabled|enabled}0 in the PCH file but "      "is currently %select{disabled|enabled}1">; +def warn_pch_char_signed : Error< +    "char was %select{unsigned|signed}0 in the PCH file but " +    "is currently %select{unsigned|signed}1">;  def err_not_a_pch_file : Error<      "'%0' does not appear to be a precompiled header file">, DefaultFatal; diff --git a/include/clang/Basic/DiagnosticParseKinds.td b/include/clang/Basic/DiagnosticParseKinds.td index 2912344e06f8b..81afac9a602e0 100644 --- a/include/clang/Basic/DiagnosticParseKinds.td +++ b/include/clang/Basic/DiagnosticParseKinds.td @@ -264,6 +264,8 @@ def warn_pragma_expected_rparen : Warning<    "missing ')' after '#pragma %0' - ignoring">;  def warn_pragma_expected_identifier : Warning<    "expected identifier in '#pragma %0' - ignored">;   +def warn_pragma_extra_tokens_at_eol : Warning< +  "extra tokens at end of '#pragma %0' - ignored">;   // - #pragma pack  def warn_pragma_pack_invalid_action : Warning<    "unknown action for '#pragma pack' - ignored">; diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 41e73c178870c..4b9b7037e161f 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -131,6 +131,8 @@ def warn_pragma_pack_pop_failed : Warning<"#pragma pack(pop, ...) failed: %0">;  def warn_pragma_unused_expected_localvar : Warning<    "only local variables can be arguments to '#pragma unused'">; +def err_unsupported_pragma_weak : Error< +  "using '#pragma weak' to refer to an undeclared identifier is not yet supported">;  /// Objective-C parser diagnostics  def err_duplicate_class_def : Error< diff --git a/include/clang/Basic/LangOptions.h b/include/clang/Basic/LangOptions.h index 92370cdd9efc2..7c578e32f814d 100644 --- a/include/clang/Basic/LangOptions.h +++ b/include/clang/Basic/LangOptions.h @@ -79,6 +79,7 @@ public:    unsigned AccessControl     : 1; // Whether C++ access control should                                     // be enabled. +  unsigned CharIsSigned      : 1; // Whether char is a signed or unsigned type  private:    unsigned GC : 2; // Objective-C Garbage Collection modes.  We declare                     // this enum as unsigned because MSVC insists on making enums @@ -137,6 +138,8 @@ public:      GNUInline = 0;      NoInline = 0; +    CharIsSigned = 1; +      MainFileName = 0;    } diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h index f577d6b32287c..a59c60b002248 100644 --- a/include/clang/Basic/TargetInfo.h +++ b/include/clang/Basic/TargetInfo.h @@ -38,7 +38,6 @@ class TargetInfo {  protected:    // Target values set by the ctor of the actual target implementation.  Default    // values are specified by the TargetInfo constructor. -  bool CharIsSigned;    bool TLSSupported;    unsigned char PointerWidth, PointerAlign;    unsigned char WCharWidth, WCharAlign; @@ -88,11 +87,6 @@ public:    IntType getIntPtrType() const { return IntPtrType; }    IntType getWCharType() const { return WCharType; } -  /// isCharSigned - Return true if 'char' is 'signed char' or false if it is -  /// treated as 'unsigned char'.  This is implementation defined according to -  /// C99 6.2.5p15.  In our implementation, this is target-specific. -  bool isCharSigned() const { return CharIsSigned; } -      /// getPointerWidth - Return the width of pointers on this target, for the    /// specified address space.    uint64_t getPointerWidth(unsigned AddrSpace) const { diff --git a/include/clang/Driver/Options.def b/include/clang/Driver/Options.def index 32b29cdf52812..742a04a5e3440 100644 --- a/include/clang/Driver/Options.def +++ b/include/clang/Driver/Options.def @@ -194,6 +194,7 @@ OPTION("--no-integrated-cpp", _no_integrated_cpp, Flag, INVALID, no_integrated_c  OPTION("--no-line-commands", _no_line_commands, Flag, INVALID, P, "", 0, 0, 0)  OPTION("--no-standard-includes", _no_standard_includes, Flag, INVALID, nostdinc, "", 0, 0, 0)  OPTION("--no-standard-libraries", _no_standard_libraries, Flag, INVALID, nostdlib, "", 0, 0, 0) +OPTION("--no-undefined", _no_undefined, Flag, INVALID, INVALID, "l", 0, 0, 0)  OPTION("--no-warnings", _no_warnings, Flag, INVALID, w, "", 0, 0, 0)  OPTION("--optimize=", _optimize_EQ, Joined, INVALID, O, "u", 0, 0, 0)  OPTION("--optimize", _optimize, Flag, INVALID, O, "u", 0, 0, 0) @@ -226,6 +227,7 @@ OPTION("--resource=", _resource_EQ, Joined, INVALID, fcompile_resource_EQ, "", 0  OPTION("--resource", _resource, Separate, INVALID, fcompile_resource_EQ, "J", 0, 0, 0)  OPTION("--save-temps", _save_temps, Flag, INVALID, save_temps, "", 0, 0, 0)  OPTION("--shared", _shared, Flag, INVALID, shared, "", 0, 0, 0) +OPTION("--signed-char", _signed_char, Flag, INVALID, fsigned_char, "", 0, 0, 0)  OPTION("--specs=", _specs_EQ, Joined, INVALID, specs_EQ, "u", 0, 0, 0)  OPTION("--specs", _specs, Separate, INVALID, specs_EQ, "uJ", 0, 0, 0)  OPTION("--static", _static, Flag, INVALID, static, "", 0, 0, 0) @@ -240,6 +242,7 @@ OPTION("--traditional", _traditional, Flag, INVALID, traditional, "", 0, 0, 0)  OPTION("--trigraphs", _trigraphs, Flag, INVALID, trigraphs, "", 0, 0, 0)  OPTION("--undefine-macro=", _undefine_macro_EQ, Joined, INVALID, U, "", 0, 0, 0)  OPTION("--undefine-macro", _undefine_macro, Separate, INVALID, U, "J", 0, 0, 0) +OPTION("--unsigned-char", _unsigned_char, Flag, INVALID, funsigned_char, "", 0, 0, 0)  OPTION("--user-dependencies", _user_dependencies, Flag, INVALID, MM, "", 0, 0, 0)  OPTION("--verbose", _verbose, Flag, INVALID, v, "", 0, 0, 0)  OPTION("--version", _version, Flag, INVALID, INVALID, "", 0, 0, 0) @@ -364,6 +367,7 @@ OPTION("-fblocks", fblocks, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fbootclasspath=", fbootclasspath_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fbuiltin", fbuiltin, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fclasspath=", fclasspath_EQ, Joined, f_Group, INVALID, "", 0, 0, 0) +OPTION("-fcolor-diagnostics", fcolor_diagnostics, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fcommon", fcommon, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fcompile-resource=", fcompile_resource_EQ, Joined, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fconstant-cfstrings", fconstant_cfstrings, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0) @@ -402,6 +406,7 @@ OPTION("-fno-asynchronous-unwind-tables", fno_asynchronous_unwind_tables, Flag,  OPTION("-fno-blocks", fno_blocks, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fno-builtin", fno_builtin, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fno-caret-diagnostics", fno_caret_diagnostics, Flag, f_Group, INVALID, "", 0, 0, 0) +OPTION("-fno-color-diagnostics", fno_color_diagnostics, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fno-common", fno_common, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fno-constant-cfstrings", fno_constant_cfstrings, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fno-diagnostics-fixit-info", fno_diagnostics_fixit_info, Flag, f_Group, INVALID, "", 0, 0, 0) @@ -442,6 +447,7 @@ OPTION("-fprofile-arcs", fprofile_arcs, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fprofile-generate", fprofile_generate, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-framework", framework, Separate, INVALID, INVALID, "l", 0, 0, 0)  OPTION("-fsigned-bitfields", fsigned_bitfields, Flag, f_Group, INVALID, "", 0, 0, 0) +OPTION("-fsigned-char", fsigned_char, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fstack-protector", fstack_protector, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)  OPTION("-fstrict-aliasing", fstrict_aliasing, Flag, clang_ignored_f_Group, INVALID, "", 0, 0, 0)  OPTION("-fsyntax-only", fsyntax_only, Flag, INVALID, INVALID, "d", 0, 0, 0) @@ -452,6 +458,7 @@ OPTION("-ftraditional", ftraditional, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-ftrapv", ftrapv, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-funit-at-a-time", funit_at_a_time, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-funsigned-bitfields", funsigned_bitfields, Flag, f_Group, INVALID, "", 0, 0, 0) +OPTION("-funsigned-char", funsigned_char, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-funwind-tables", funwind_tables, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fverbose-asm", fverbose_asm, Flag, f_Group, INVALID, "", 0, 0, 0)  OPTION("-fvisibility=", fvisibility_EQ, Joined, f_Group, INVALID, "", 0, 0, 0) @@ -569,6 +576,7 @@ OPTION("-pthread", pthread, Flag, INVALID, INVALID, "", 0, 0, 0)  OPTION("-p", p, Flag, INVALID, INVALID, "", 0, 0, 0)  OPTION("-read_only_relocs", read__only__relocs, Separate, INVALID, INVALID, "", 0, 0, 0)  OPTION("-remap", remap, Flag, INVALID, INVALID, "", 0, 0, 0) +OPTION("-rpath", rpath, Separate, INVALID, INVALID, "l", 0, 0, 0)  OPTION("-r", r, Flag, INVALID, INVALID, "", 0, 0, 0)  OPTION("-save-temps", save_temps, Flag, INVALID, INVALID, "d", 0,          "Save intermediate compilation results", 0) diff --git a/include/clang/Frontend/CompileOptions.h b/include/clang/Frontend/CompileOptions.h index 34815c8cb54f3..75dec00f747f3 100644 --- a/include/clang/Frontend/CompileOptions.h +++ b/include/clang/Frontend/CompileOptions.h @@ -41,6 +41,8 @@ public:                                    /// should be run through the LLVM Verifier.    unsigned TimePasses        : 1; /// Set when -ftime-report is enabled.    unsigned NoCommon          : 1; /// Set when -fno-common or C++ is enabled. +  unsigned DisableRedZone    : 1; /// Set when -mno-red-zone is enabled. +  unsigned NoImplicitFloat   : 1; /// Set when -mno-implicit-float is enabled.    /// Inlining - The kind of inlining to perform.    InliningMethod Inlining; @@ -63,6 +65,8 @@ public:      TimePasses = 0;      NoCommon = 0;      Inlining = NoInlining; +    DisableRedZone = 0; +    NoImplicitFloat = 0;    }    }; diff --git a/include/clang/Frontend/TextDiagnosticPrinter.h b/include/clang/Frontend/TextDiagnosticPrinter.h index 3c9dcb8d9c179..f8408bdbd742e 100644 --- a/include/clang/Frontend/TextDiagnosticPrinter.h +++ b/include/clang/Frontend/TextDiagnosticPrinter.h @@ -40,6 +40,7 @@ class TextDiagnosticPrinter : public DiagnosticClient {    bool PrintDiagnosticOption;    bool PrintFixItInfo;    unsigned MessageLength; +  bool UseColors;  public:    TextDiagnosticPrinter(llvm::raw_ostream &os, @@ -48,14 +49,16 @@ public:                          bool printRangeInfo = true,                          bool printDiagnosticOption = true,                          bool printFixItInfo = true, -			unsigned messageLength = 0) +                        unsigned messageLength = 0, +                        bool useColors = false)      : OS(os), LangOpts(0),        LastCaretDiagnosticWasNote(false), ShowColumn(showColumn),         CaretDiagnostics(caretDiagnistics), ShowLocation(showLocation),        PrintRangeInfo(printRangeInfo),        PrintDiagnosticOption(printDiagnosticOption),        PrintFixItInfo(printFixItInfo), -      MessageLength(messageLength) {} +      MessageLength(messageLength), +      UseColors(useColors) {}    void setLangOptions(const LangOptions *LO) {      LangOpts = LO; diff --git a/include/clang/Parse/Action.h b/include/clang/Parse/Action.h index 5c23f9ac6147f..579fe6cb038ce 100644 --- a/include/clang/Parse/Action.h +++ b/include/clang/Parse/Action.h @@ -417,6 +417,7 @@ public:    }    virtual DeclPtrTy ActOnIvar(Scope *S, SourceLocation DeclStart, +                              DeclPtrTy IntfDecl,                                Declarator &D, ExprTy *BitfieldWidth,                                tok::ObjCKeywordKind visibility) {      return DeclPtrTy(); @@ -1750,13 +1751,29 @@ public:      return;    } -  /// ActOnPragmaPack - Called on well formed #pragma pack(...). +  /// ActOnPragmaUnused - Called on well formed #pragma unused(...).    virtual void ActOnPragmaUnused(ExprTy **Exprs, unsigned NumExprs,                                   SourceLocation PragmaLoc,                                    SourceLocation LParenLoc,                                   SourceLocation RParenLoc) {      return; -  }   +  } + +  /// ActOnPragmaWeakID - Called on well formed #pragma weak ident. +  virtual void ActOnPragmaWeakID(IdentifierInfo* WeakName, +                                 SourceLocation PragmaLoc, +                                 SourceLocation WeakNameLoc) { +    return; +  } + +  /// ActOnPragmaWeakAlias - Called on well formed #pragma weak ident = ident. +  virtual void ActOnPragmaWeakAlias(IdentifierInfo* WeakName, +                                    IdentifierInfo* AliasName, +                                    SourceLocation PragmaLoc, +                                    SourceLocation WeakNameLoc, +                                    SourceLocation AliasNameLoc) { +    return; +  }  };  /// MinimalAction - Minimal actions are used by light-weight clients of the diff --git a/include/clang/Parse/Parser.h b/include/clang/Parse/Parser.h index 26e37e2806a04..6218ade323009 100644 --- a/include/clang/Parse/Parser.h +++ b/include/clang/Parse/Parser.h @@ -81,6 +81,7 @@ class Parser {    llvm::OwningPtr<PragmaHandler> PackHandler;    llvm::OwningPtr<PragmaHandler> UnusedHandler; +  llvm::OwningPtr<PragmaHandler> WeakHandler;    /// Whether the '>' token acts as an operator or not. This will be    /// true except when we are parsing an expression within a C++  | 
