Handle PluginAttrInstances using ManagedStatic
authorJohn Brawn <john.brawn@arm.com>
Wed, 4 Mar 2020 13:25:06 +0000 (13:25 +0000)
committerJohn Brawn <john.brawn@arm.com>
Wed, 4 Mar 2020 15:03:13 +0000 (15:03 +0000)
commit2bb3fb05e20e272790170e86fb76dac23a67f52c
tree340245c56ad00015c3af5d9af07cc9ba40e0f0c2
parent00c5793edefdb465db6cff06b3b50706c31b25c1
Handle PluginAttrInstances using ManagedStatic

We need to make sure that PluginAttrInstances is deleted before shared libraries
are unloaded, because otherwise when deleting its contents we'll try to access
a virtual destructor which no longer exists.

As shared libraries are managed using ManagedStatic we can do this by also using
ManagedStatic for PluginAttrInstances as ManagedStatics are deleted in reverse
order of construction and we know that PluginAttrInstances will only be
accessed, and thus constructed, after shared libraries have been loaded.
clang/lib/Sema/ParsedAttr.cpp