Make target features check work with ctor and dtor-
authorErich Keane <erich.keane@intel.com>
Wed, 8 Apr 2020 20:14:33 +0000 (13:14 -0700)
committerErich Keane <erich.keane@intel.com>
Wed, 8 Apr 2020 20:19:55 +0000 (13:19 -0700)
commit30588a739584bb8ac41715d68656d22bd85198e7
treedfd35280a3d4d1d8739d438ed419fce3fccf9dbc
parenteceae25f6d9a29303573859841481c24033f58e6
Make target features check work with ctor and dtor-

The problem was reported in PR45468, applying target features to an
always_inline constructor/destructor runs afoul of GlobalDecl
construction assert when checking for target-feature compatibility.

The core problem is fixed by using the version of the check that takes a
FunctionDecl rather than the GlobalDecl. However, while writing the
test, I discovered that source locations weren't properly set for this
check on ctors/dtors. This patch also fixes constructors and CALLED destructors.

Unfortunately, it doesn't seem too possible to get a meaningful source
location for a 'cleanup' destructor, so those are still 'frontend' level
errors unfortunately. A fixme was added to the test to cover that
situation.
clang/lib/CodeGen/CGClass.cpp
clang/lib/CodeGen/CGExprCXX.cpp
clang/lib/CodeGen/CodeGenFunction.cpp
clang/test/CodeGenCXX/target-features-error.cpp