[OpaquePtr] Allow globals with opaque pointer value type
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 25 Jun 2021 09:26:15 +0000 (11:26 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 25 Jun 2021 16:22:26 +0000 (18:22 +0200)
commit1e6303e60ca5af4fbe7ca728572fd65666a98271
treef6d50cc268871852cbcf927467c245f026d50005
parent4d8156ef87f8bc6fdb8ed03b2f87123d02ac7321
[OpaquePtr] Allow globals with opaque pointer value type

Do this by making opaque pointers a valid pointer element type,
for which we implicitly create an opaque pointer (moving the logic
from getPointerTo into PointerType::get).

We'll never create something like a "pointer to opaque pointer",
but accept it in the API, because a lot of code reasonably assumes
that you can create a pointer to pointer type.

Differential Revision: https://reviews.llvm.org/D104902
llvm/lib/IR/Type.cpp
llvm/test/Assembler/invalid-opaque-ptr.ll [deleted file]
llvm/test/Assembler/opaque-ptr.ll