From 01adae8f440672196da28be6fce2bb4acf8ab40b Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Thu, 31 Jul 2014 21:24:32 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214446 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Parse/ParsePragma.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Parse/ParsePragma.cpp b/lib/Parse/ParsePragma.cpp index 106c02b362..e0b8f8b4ea 100644 --- a/lib/Parse/ParsePragma.cpp +++ b/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); -- 2.50.1