summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParsePragma.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-08-14 06:35:08 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-08-14 06:35:08 +0000
commitad2986efcefe21e5e8f1f3e4a2974c9989b9bb87 (patch)
tree4fc32a44e323ed70ed45c53a9514c74d319d53af /clang/lib/Parse/ParsePragma.cpp
parentb593d7815573c61b68787d894a31c5507b53204f (diff)
downloadbcm5719-llvm-ad2986efcefe21e5e8f1f3e4a2974c9989b9bb87.tar.gz
bcm5719-llvm-ad2986efcefe21e5e8f1f3e4a2974c9989b9bb87.zip
Parse: Don't attempt to act on #pragma init_seg when not targeting MSVC
It doesn't really make sense to try and do stuff with #pragma init_seg when targeting non-Microsoft platforms; notions like library vs user initializers don't exist for other targets. This fixes PR20639. llvm-svn: 215618
Diffstat (limited to 'clang/lib/Parse/ParsePragma.cpp')
-rw-r--r--clang/lib/Parse/ParsePragma.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParsePragma.cpp b/clang/lib/Parse/ParsePragma.cpp
index ecdef48f0e2..64066c1ec29 100644
--- a/clang/lib/Parse/ParsePragma.cpp
+++ b/clang/lib/Parse/ParsePragma.cpp
@@ -12,6 +12,7 @@
//===----------------------------------------------------------------------===//
#include "RAIIObjectsForParser.h"
+#include "clang/Basic/TargetInfo.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Parse/ParseDiagnostic.h"
#include "clang/Parse/Parser.h"
@@ -661,6 +662,11 @@ bool Parser::HandlePragmaMSSegment(StringRef PragmaName,
// #pragma init_seg({ compiler | lib | user | "section-name" [, func-name]} )
bool Parser::HandlePragmaMSInitSeg(StringRef PragmaName,
SourceLocation PragmaLocation) {
+ if (getTargetInfo().getTriple().getEnvironment() != llvm::Triple::MSVC) {
+ PP.Diag(PragmaLocation, diag::warn_pragma_init_seg_unsupported_target);
+ return false;
+ }
+
if (ExpectAndConsume(tok::l_paren, diag::warn_pragma_expected_lparen,
PragmaName))
return false;
OpenPOWER on IntegriCloud