summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParsePragma.cpp
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2014-07-31 21:24:32 +0000
committerAaron Ballman <aaron@aaronballman.com>2014-07-31 21:24:32 +0000
commitef940aaf07bb44a7d39279b49ecbd9fbf37ae47d (patch)
tree241113cbce327e718d8bd45b515372e3accff57e /clang/lib/Parse/ParsePragma.cpp
parentb5a65395ccec9554181640cd1d484d7567f20862 (diff)
downloadbcm5719-llvm-ef940aaf07bb44a7d39279b49ecbd9fbf37ae47d.tar.gz
bcm5719-llvm-ef940aaf07bb44a7d39279b49ecbd9fbf37ae47d.zip
Loop hint pragmas sometimes do not contain an identifier option (such as #pragma unroll(4)). Check explicitly that the token we stored was an identifier.
Amends r214432 llvm-svn: 214446
Diffstat (limited to 'clang/lib/Parse/ParsePragma.cpp')
-rw-r--r--clang/lib/Parse/ParsePragma.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParsePragma.cpp b/clang/lib/Parse/ParsePragma.cpp
index 106c02b362f..e0b8f8b4eae 100644
--- a/clang/lib/Parse/ParsePragma.cpp
+++ b/clang/lib/Parse/ParsePragma.cpp
@@ -733,7 +733,11 @@ bool Parser::HandlePragmaLoopHint(LoopHint &Hint) {
Hint.PragmaNameLoc = IdentifierLoc::create(
Actions.Context, Info->PragmaName.getLocation(), PragmaNameInfo);
- IdentifierInfo *OptionInfo = Info->Option.getIdentifierInfo();
+ // It is possible that the loop hint has no option identifier, such as
+ // #pragma unroll(4).
+ IdentifierInfo *OptionInfo = Info->Option.is(tok::identifier)
+ ? Info->Option.getIdentifierInfo()
+ : nullptr;
Hint.OptionLoc = IdentifierLoc::create(
Actions.Context, Info->Option.getLocation(), OptionInfo);
OpenPOWER on IntegriCloud