From: Chris Lattner Date: Sun, 19 Apr 2009 21:20:35 +0000 (+0000) Subject: stub out STDC #pragmas. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=062f23246510393c19b537b68ec88b6a08ee8996;p=clang stub out STDC #pragmas. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69550 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Lex/Pragma.cpp b/lib/Lex/Pragma.cpp index 6cea5fbe73..be610a500b 100644 --- a/lib/Lex/Pragma.cpp +++ b/lib/Lex/Pragma.cpp @@ -509,6 +509,42 @@ struct PragmaCommentHandler : public PragmaHandler { PP.HandlePragmaComment(CommentTok); } }; + +// Pragma STDC implementations. + +/// PragmaSTDC_FP_CONTRACTHandler - "#pragma STDC FP_CONTRACT ...". +struct PragmaSTDC_FP_CONTRACTHandler : public PragmaHandler { + PragmaSTDC_FP_CONTRACTHandler(const IdentifierInfo *ID) : PragmaHandler(ID) {} + virtual void HandlePragma(Preprocessor &PP, Token &CommentTok) { + //PP.HandlePragmaComment(CommentTok); + } +}; + +/// PragmaSTDC_FENV_ACCESSHandler - "#pragma STDC FENV_ACCESS ...". +struct PragmaSTDC_FENV_ACCESSHandler : public PragmaHandler { + PragmaSTDC_FENV_ACCESSHandler(const IdentifierInfo *ID) : PragmaHandler(ID) {} + virtual void HandlePragma(Preprocessor &PP, Token &CommentTok) { + //PP.HandlePragmaComment(CommentTok); + } +}; + +/// PragmaSTDC_CX_LIMITED_RANGEHandler - "#pragma STDC CX_LIMITED_RANGE ...". +struct PragmaSTDC_CX_LIMITED_RANGEHandler : public PragmaHandler { + PragmaSTDC_CX_LIMITED_RANGEHandler(const IdentifierInfo *ID) + : PragmaHandler(ID) {} + virtual void HandlePragma(Preprocessor &PP, Token &CommentTok) { + //PP.HandlePragmaComment(CommentTok); + } +}; + +/// PragmaSTDC_UnknownHandler - "#pragma STDC ...". +struct PragmaSTDC_UnknownHandler : public PragmaHandler { + PragmaSTDC_UnknownHandler() : PragmaHandler(0) {} + virtual void HandlePragma(Preprocessor &PP, Token &CommentTok) { + //PP.HandlePragmaComment(CommentTok); + } +}; + } // end anonymous namespace @@ -523,6 +559,14 @@ void Preprocessor::RegisterBuiltinPragmas() { AddPragmaHandler("GCC", new PragmaDependencyHandler( getIdentifierInfo("dependency"))); + AddPragmaHandler("STDC", new PragmaSTDC_FP_CONTRACTHandler( + getIdentifierInfo("FP_CONTRACT"))); + AddPragmaHandler("STDC", new PragmaSTDC_FENV_ACCESSHandler( + getIdentifierInfo("FENV_ACCESS"))); + AddPragmaHandler("STDC", new PragmaSTDC_CX_LIMITED_RANGEHandler( + getIdentifierInfo("CX_LIMITED_RANGE"))); + AddPragmaHandler("STDC", new PragmaSTDC_UnknownHandler()); + // MS extensions. if (Features.Microsoft) AddPragmaHandler(0, new PragmaCommentHandler(getIdentifierInfo("comment"))); diff --git a/test/Preprocessor/pragma_unknown.c b/test/Preprocessor/pragma_unknown.c index 32107591e0..f525a64461 100644 --- a/test/Preprocessor/pragma_unknown.c +++ b/test/Preprocessor/pragma_unknown.c @@ -5,3 +5,20 @@ #define bar xX #pragma foo bar // expected-warning {{unknown pragma ignored}} +#pragma STDC FP_CONTRACT ON +#pragma STDC FP_CONTRACT OFF +#pragma STDC FP_CONTRACT DEFAULT +#pragma STDC FP_CONTRACT IN_BETWEEN + +#pragma STDC FENV_ACCESS ON +#pragma STDC FENV_ACCESS OFF +#pragma STDC FENV_ACCESS DEFAULT +#pragma STDC FENV_ACCESS IN_BETWEEN + +#pragma STDC CX_LIMITED_RANGE ON +#pragma STDC CX_LIMITED_RANGE OFF +#pragma STDC CX_LIMITED_RANGE DEFAULT +#pragma STDC CX_LIMITED_RANGE IN_BETWEEN + +#pragma STDC SO_GREAT +