aboutsummaryrefslogtreecommitdiff
path: root/Lex/Preprocessor.cpp
diff options
context:
space:
mode:
authorSteve Naroff <snaroff@apple.com>2007-10-30 23:14:51 +0000
committerSteve Naroff <snaroff@apple.com>2007-10-30 23:14:51 +0000
commit09b266eb2a014b7af4dc06126c47b7629030ce09 (patch)
tree5020e9fd9a0273b582009c32cdaa3930cbd75384 /Lex/Preprocessor.cpp
parent0d892d8bfddd4916cc4f3467e1184a623d0716da (diff)
Stop pre-defining objc_msgSend/objc_getClass in the preprocessor. Instead, I generate these declaration on the fly when rewriting a message expression.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43529 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Lex/Preprocessor.cpp')
-rw-r--r--Lex/Preprocessor.cpp16
1 files changed, 1 insertions, 15 deletions
diff --git a/Lex/Preprocessor.cpp b/Lex/Preprocessor.cpp
index 40abfe5cfc..784fb19e49 100644
--- a/Lex/Preprocessor.cpp
+++ b/Lex/Preprocessor.cpp
@@ -369,15 +369,14 @@ static void InitializePredefinedMacros(Preprocessor &PP,
DefineBuiltinMacro(Buf, "__OBJC__=1");
if (PP.getLangOptions().ObjC2)
DefineBuiltinMacro(Buf, "__OBJC2__=1");
-
if (PP.getLangOptions().ObjC1) {
+ const char *ObjcType;
// Predefine all the ObjC goodies (traditionally declared in <objc/objc.h>).
// We define the following header guard for source compatibility. It has
// the effect of ignoring any explicit inclusion of <objc/objc.h>:-)
DefineBuiltinMacro(Buf, "_OBJC_OBJC_H_=1");
DefineBuiltinMacro(Buf, "OBJC_EXPORT=extern");
DefineBuiltinMacro(Buf, "OBJC_IMPORT=extern");
- const char *ObjcType;
ObjcType = "typedef struct objc_class *Class;\n";
Buf.insert(Buf.end(), ObjcType, ObjcType+strlen(ObjcType));
ObjcType = "typedef struct objc_object { Class isa; } *id;\n";
@@ -396,19 +395,6 @@ static void InitializePredefinedMacros(Preprocessor &PP,
Buf.insert(Buf.end(), ObjcType, ObjcType+strlen(ObjcType));
ObjcType = "extern SEL sel_getUid(const char *str);\n";
Buf.insert(Buf.end(), ObjcType, ObjcType+strlen(ObjcType));
-
- // Predefine ObjC primitive functions, traditionally declared in
- // <objc/objc-runtime.h>. Unlike the declarations above, we don't protect
- // these with a header guard (since multiple identical function declarations
- // don't result in an error. FIXME: don't predefine these...
- ObjcType = "extern id objc_getClass(const char *name);\n";
- Buf.insert(Buf.end(), ObjcType, ObjcType+strlen(ObjcType));
- ObjcType = "extern id objc_getMetaClass(const char *name);\n";
- Buf.insert(Buf.end(), ObjcType, ObjcType+strlen(ObjcType));
- ObjcType = "extern id objc_msgSend(id self, SEL op, ...);\n";
- Buf.insert(Buf.end(), ObjcType, ObjcType+strlen(ObjcType));
- ObjcType = "extern id objc_msgSendSuper(struct objc_super *super, SEL op, ...);\n";
- Buf.insert(Buf.end(), ObjcType, ObjcType+strlen(ObjcType));
}
// Add __builtin_va_list typedef.