]> granicus.if.org Git - clang/commit
Fix PR20069: bad loop pragma arguments crash FE
authorEli Bendersky <eliben@google.com>
Thu, 19 Jun 2014 18:30:15 +0000 (18:30 +0000)
committerEli Bendersky <eliben@google.com>
Thu, 19 Jun 2014 18:30:15 +0000 (18:30 +0000)
commit427d5c99b0408e4ca472b8a65d1fbd15261d7d1a
tree264d36c20c2f3a38005efbeba0deee78dc23f8ce
parent47d52751cfb3a2c0491789ccdf097879d92ad0d6
Fix PR20069: bad loop pragma arguments crash FE

This patch fixes a crash when handling malformed arguments to loop pragmas such
as: "#pragma clang loop vectorize(()".  Essentially any argument which is not an
identifier or constant resulted in a crash.  This patch also changes a couple of
the error messages which weren't quite correct.  New behavior with this patch vs
old behavior:

#pragma clang loop vectorize(1)
OLD: error: missing keyword; expected 'enable' or 'disable'
NEW: error: invalid argument; expected 'enable' or 'disable'

#pragma clang loop vectorize()
OLD: error: expected ')'
NEW: error: missing argument to loop pragma 'vectorize'

#pragma clang loop vectorize_width(bad)
OLD: error: missing value; expected a positive integer value
NEW: error: invalid argument; expected a positive integer value

#pragma clang loop vectorize(bad)
OLD: invalid keyword 'bad'; expected 'enable' or 'disable'
NEW: error: invalid argument; expected 'enable' or 'disable'

http://reviews.llvm.org/D4197

Patch by Mark Heffernan

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@211292 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/DiagnosticParseKinds.td
include/clang/Basic/DiagnosticSemaKinds.td
lib/Parse/ParsePragma.cpp
lib/Sema/SemaStmtAttr.cpp
test/Parser/pragma-loop.cpp