Fix broken getAttributeSpellingListIndex for pragma attributes
authorErich Keane <erich.keane@intel.com>
Wed, 9 Aug 2017 15:27:36 +0000 (15:27 +0000)
committerErich Keane <erich.keane@intel.com>
Wed, 9 Aug 2017 15:27:36 +0000 (15:27 +0000)
commitbe89f4c5655d01dd44d6c82a4d5e44820a81f404
treee2c7cc0f9821279d5d3802c8a9931f97e4502661
parent0a19d433c1a52e65950998607517866ee42db40c
Fix broken getAttributeSpellingListIndex for pragma attributes

We noticed when implementing a new pragma that the TableGen-generated function
getAttributeSpellingListIndex() did not work for pragma attributes. It relies
on the values in the enum AttributeList::Syntax and a new value
AS_ContextSensitiveKeyword was added changing the value for AS_Pragma.
Apparently no tests failed since no pragmas currently make use of the
generated function.

To fix this we can move AS_Pragma back to the value that TableGen code expects.
Also to prevent changes in the enum from breaking that routine again I added
calls to getAttributeSpellingListIndex() in the unroll pragma code. That will
cause some lit test failures if the order is changed. I added a comment to
remind of this issue in the future.

This assumes we don’t need/want full TableGen support for
AS_ContextSensitiveKeyword. It currently only appears in getAttrKind and no
other TableGen-generated routines.

Patch by: mikerice

Differential Revision: https://reviews.llvm.org/D36473

llvm-svn: 310483
clang/include/clang/Sema/AttributeList.h
clang/lib/Sema/SemaStmtAttr.cpp