|
@@ -22,9 +22,12 @@ using namespace clang;
|
|
|
static const Builtin::Info BuiltinInfo[] = {
|
|
|
{ "not a builtin function", nullptr, nullptr, nullptr, ALL_LANGUAGES},
|
|
|
#define BUILTIN(ID, TYPE, ATTRS) { #ID, TYPE, ATTRS, 0, ALL_LANGUAGES },
|
|
|
-#define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) { #ID, TYPE, ATTRS, 0, BUILTIN_LANG },
|
|
|
-#define LIBBUILTIN(ID, TYPE, ATTRS, HEADER, BUILTIN_LANG) { #ID, TYPE, ATTRS, HEADER,\
|
|
|
- BUILTIN_LANG },
|
|
|
+#define LANGBUILTIN(ID, TYPE, ATTRS, LANGS) \
|
|
|
+ { #ID, TYPE, ATTRS, 0, LANGS } \
|
|
|
+ ,
|
|
|
+#define LIBBUILTIN(ID, TYPE, ATTRS, HEADER, LANGS) \
|
|
|
+ { #ID, TYPE, ATTRS, HEADER, LANGS } \
|
|
|
+ ,
|
|
|
#include "clang/Basic/Builtins.def"
|
|
|
};
|
|
|
|
|
@@ -53,12 +56,10 @@ bool Builtin::Context::BuiltinIsSupported(const Builtin::Info &BuiltinInfo,
|
|
|
bool MathBuiltinsUnsupported =
|
|
|
LangOpts.NoMathBuiltin && BuiltinInfo.HeaderName &&
|
|
|
llvm::StringRef(BuiltinInfo.HeaderName).equals("math.h");
|
|
|
- bool GnuModeUnsupported = !LangOpts.GNUMode &&
|
|
|
- (BuiltinInfo.builtin_lang & GNU_LANG);
|
|
|
- bool MSModeUnsupported = !LangOpts.MicrosoftExt &&
|
|
|
- (BuiltinInfo.builtin_lang & MS_LANG);
|
|
|
- bool ObjCUnsupported = !LangOpts.ObjC1 &&
|
|
|
- BuiltinInfo.builtin_lang == OBJC_LANG;
|
|
|
+ bool GnuModeUnsupported = !LangOpts.GNUMode && (BuiltinInfo.Langs & GNU_LANG);
|
|
|
+ bool MSModeUnsupported =
|
|
|
+ !LangOpts.MicrosoftExt && (BuiltinInfo.Langs & MS_LANG);
|
|
|
+ bool ObjCUnsupported = !LangOpts.ObjC1 && BuiltinInfo.Langs == OBJC_LANG;
|
|
|
return !BuiltinsUnsupported && !MathBuiltinsUnsupported &&
|
|
|
!GnuModeUnsupported && !MSModeUnsupported && !ObjCUnsupported;
|
|
|
}
|