diff options
Diffstat (limited to 'include/clang/Basic')
-rw-r--r-- | include/clang/Basic/Builtins.def | 1 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticGroups.td | 2 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 7 | ||||
-rw-r--r-- | include/clang/Basic/FileManager.h | 8 | ||||
-rw-r--r-- | include/clang/Basic/TargetInfo.h | 14 |
5 files changed, 27 insertions, 5 deletions
diff --git a/include/clang/Basic/Builtins.def b/include/clang/Basic/Builtins.def index cad2824..eff4f5e 100644 --- a/include/clang/Basic/Builtins.def +++ b/include/clang/Basic/Builtins.def @@ -314,6 +314,7 @@ BUILTIN(__builtin_setjmp, "iv**", "") BUILTIN(__builtin_longjmp, "vv**i", "r") BUILTIN(__builtin_unwind_init, "v", "") BUILTIN(__builtin_eh_return_data_regno, "ii", "nc") +BUILTIN(__builtin_snprintf, "ic*zcC*.", "nFp:2:") BUILTIN(__builtin_vsprintf, "ic*cC*a", "nFP:1:") BUILTIN(__builtin_vsnprintf, "ic*zcC*a", "nFP:2:") diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index 930fe42..4907751 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -48,6 +48,7 @@ def CXXHexFloats : DiagGroup<"c++-hex-floats">; def : DiagGroup<"c++0x-compat", [CXXHexFloats]>; def FourByteMultiChar : DiagGroup<"four-char-constants">; def : DiagGroup<"idiomatic-parentheses">; +def IgnoredQualifiers : DiagGroup<"ignored-qualifiers">; def : DiagGroup<"import">; def : DiagGroup<"init-self">; def : DiagGroup<"inline">; @@ -167,6 +168,7 @@ def Format2 : DiagGroup<"format=2", def Extra : DiagGroup<"extra", [ MissingFieldInitializers, + IgnoredQualifiers, InitializerOverrides, SemiBeforeMethodBody, SignCompare, diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 8fac1ed..01a37fb 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -121,7 +121,8 @@ def warn_use_out_of_scope_declaration : Warning< def err_inline_non_function : Error< "'inline' can only appear on functions">; def warn_qual_return_type : Warning< - "'%0' type qualifier%s1 on return type %plural{1:has|:have}1 no effect">; + "'%0' type qualifier%s1 on return type %plural{1:has|:have}1 no effect">, + InGroup<IgnoredQualifiers>, DefaultIgnore; def warn_decl_shadow : Warning<"declaration shadows a %select{" @@ -1986,6 +1987,10 @@ def note_precedence_bitwise_first : Note< "place parentheses around the %0 expression to evaluate it first">; def note_precedence_bitwise_silence : Note< "place parentheses around the %0 expression to silence this warning">; + +def warn_logical_instead_of_bitwise : Warning< + "use of logical %0 with constant operand; switch to bitwise %1 or " + "remove constant">, InGroup<DiagGroup<"logical-bitwise-confusion">>; def err_sizeof_nonfragile_interface : Error< "invalid application of '%select{alignof|sizeof}1' to interface %0 in " diff --git a/include/clang/Basic/FileManager.h b/include/clang/Basic/FileManager.h index d0e0118..e71f51a 100644 --- a/include/clang/Basic/FileManager.h +++ b/include/clang/Basic/FileManager.h @@ -189,7 +189,7 @@ public: /// getDirectory - Lookup, cache, and verify the specified directory. This /// returns null if the directory doesn't exist. /// - const DirectoryEntry *getDirectory(const llvm::StringRef &Filename) { + const DirectoryEntry *getDirectory(llvm::StringRef Filename) { return getDirectory(Filename.begin(), Filename.end()); } const DirectoryEntry *getDirectory(const char *FileStart,const char *FileEnd); @@ -197,7 +197,7 @@ public: /// getFile - Lookup, cache, and verify the specified file. This returns null /// if the file doesn't exist. /// - const FileEntry *getFile(const llvm::StringRef &Filename) { + const FileEntry *getFile(llvm::StringRef Filename) { return getFile(Filename.begin(), Filename.end()); } const FileEntry *getFile(const char *FilenameStart, @@ -206,8 +206,8 @@ public: /// \brief Retrieve a file entry for a "virtual" file that acts as /// if there were a file with the given name on disk. The file /// itself is not accessed. - const FileEntry *getVirtualFile(const llvm::StringRef &Filename, - off_t Size, time_t ModificationTime); + const FileEntry *getVirtualFile(llvm::StringRef Filename, off_t Size, + time_t ModificationTime); void PrintStats() const; }; diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h index 5763a12..9f7debf 100644 --- a/include/clang/Basic/TargetInfo.h +++ b/include/clang/Basic/TargetInfo.h @@ -61,6 +61,7 @@ protected: std::string CXXABI; unsigned HasAlignMac68kSupport : 1; + unsigned RealTypeUsesObjCFPRet : 3; // TargetInfo Constructor. Default initializes all fields. TargetInfo(const std::string &T); @@ -87,6 +88,13 @@ public: SignedLongLong, UnsignedLongLong }; + + enum RealType { + Float = 0, + Double, + LongDouble + }; + protected: IntType SizeType, IntMaxType, UIntMaxType, PtrDiffType, IntPtrType, WCharType, WIntType, Char16Type, Char32Type, Int64Type, SigAtomicType; @@ -233,6 +241,12 @@ public: /// integer type enum. For example, SignedLong -> "L". static const char *getTypeConstantSuffix(IntType T); + /// \brief Check whether the given real type should use the "fpret" flavor of + /// Obj-C message passing on this target. + bool useObjCFPRetForRealType(RealType T) const { + return RealTypeUsesObjCFPRet & (1 << T); + } + ///===---- Other target property query methods --------------------------===// /// getTargetDefines - Appends the target-specific #define values for this |