From ef940aaf07bb44a7d39279b49ecbd9fbf37ae47d Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Thu, 31 Jul 2014 21:24:32 +0000 Subject: 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 --- clang/lib/Parse/ParsePragma.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'clang/lib/Parse/ParsePragma.cpp') 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); -- cgit v1.2.3