Fix __attribute__((annotate("")) with non-zero globals AS
authorAlex Richardson <Alexander.Richardson@cl.cam.ac.uk>
Thu, 26 Aug 2021 08:50:05 +0000 (09:50 +0100)
committerAlex Richardson <Alexander.Richardson@cl.cam.ac.uk>
Thu, 26 Aug 2021 09:09:40 +0000 (10:09 +0100)
commit7cab90a7b1c47780bbf7cfbfda4a1cbab24f0e5b
treefd082569d75fa8c222689d6e0af2b7d2860b6e5d
parentbf66b0eefcda20170eeb574670121159fcd755fa
Fix __attribute__((annotate("")) with non-zero globals AS

The existing code attempting to bitcast from a value in the default globals AS
to i8 addrspace(0)* was triggering an assertion failure in our downstream fork.
I found this while compiling poppler for CHERI-RISC-V (we use AS200 for all
globals). The test case uses AMDGPU since that is one of the in-tree targets
with a non-zero default globals address space.
The new test previously triggered a "Invalid constantexpr bitcast!" assertion
and now correctly generates code with addrspace(1) pointers.

Reviewed By: rjmccall

Differential Revision: https://reviews.llvm.org/D105972
clang/lib/CodeGen/CodeGenModule.cpp
clang/lib/CodeGen/CodeGenTypeCache.h
clang/test/CodeGen/annotations-global.c