diff options
author | Chris Lattner <sabre@nondot.org> | 2009-04-22 03:42:19 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-04-22 03:42:19 +0000 |
commit | 3936024941229e235aed7f53949a117a54eebf68 (patch) | |
tree | 30cccfdcf1d6924a0f59c68f75a4e6596322579f /lib/Frontend/InitPreprocessor.cpp | |
parent | 1c02f86f5be46f36d6c5facb88c2d15e0e19266c (diff) |
Fix rdar://6814950 - stdint.h isn't "-pedantic -std=c89" clean,
by marking the predefines buffer as a system header. The problem
with stdint is that it was getting problems like this:
/Volumes/Projects/cvs/llvm/Debug/lib/clang/1.0/include/stdint.h:43:9: warning: 'long long' is an extension when C99 mode is not enabled
typedef __INT64_TYPE__ int64_t;
^
<built-in>:73:29: note: instantiated from:
#define __INT64_TYPE__ long long
^
We correctly silence warnings in system headers, but only if the
spelling location of the token came from the system header. This is
designed so that if you use a system macro in your code that you don't
get punished for its definition. This is all cool except that the
predefines buffer wasn't considered a system header.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69770 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/InitPreprocessor.cpp')
-rw-r--r-- | lib/Frontend/InitPreprocessor.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp index 9cc83ef219..746eba9cf2 100644 --- a/lib/Frontend/InitPreprocessor.cpp +++ b/lib/Frontend/InitPreprocessor.cpp @@ -417,13 +417,17 @@ bool InitializePreprocessor(Preprocessor &PP, const PreprocessorInitOptions& InitOpts) { std::vector<char> PredefineBuffer; + const char *LineDirective = "# 1 \"<built-in>\" 3\n"; + PredefineBuffer.insert(PredefineBuffer.end(), + LineDirective, LineDirective+strlen(LineDirective)); + // Install things like __POWERPC__, __GNUC__, etc into the macro table. InitializePredefinedMacros(PP.getTargetInfo(), PP.getLangOptions(), PredefineBuffer); // Add on the predefines from the driver. Wrap in a #line directive to report // that they come from the command line. - const char *LineDirective = "# 1 \"<command line>\" 1\n"; + LineDirective = "# 1 \"<command line>\" 1\n"; PredefineBuffer.insert(PredefineBuffer.end(), LineDirective, LineDirective+strlen(LineDirective)); @@ -451,7 +455,7 @@ bool InitializePreprocessor(Preprocessor &PP, AddImplicitInclude(PredefineBuffer, I->first); } - LineDirective = "# 2 \"<built-in>\" 2\n"; + LineDirective = "# 2 \"<built-in>\" 2 3\n"; PredefineBuffer.insert(PredefineBuffer.end(), LineDirective, LineDirective+strlen(LineDirective)); |