From 4676cf444ea2678660ee48279be99efde4bf60e9 Mon Sep 17 00:00:00 2001 From: Yuanfang Chen Date: Tue, 16 Jun 2020 10:13:44 -0700 Subject: [PATCH] [Clang] Skip adding begin source location for PragmaLoopHint'd loop when the range start is already set The range start could be set already in some invalid cases. Fixes PR46336. --- clang/lib/Parse/ParseStmt.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp index d00f6b640fb4..773c31ff3aec 100644 --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -2195,9 +2195,11 @@ StmtResult Parser::ParsePragmaLoopHint(StmtVector &Stmts, Attrs.takeAllFrom(TempAttrs); - assert(Attrs.Range.getBegin().isInvalid() && - "start of attribute range already set"); - Attrs.Range.setBegin(StartLoc); + // Start of attribute range may already be set for some invalid input. + // See PR46336. + if (Attrs.Range.getBegin().isInvalid()) + Attrs.Range.setBegin(StartLoc); + return S; }