Does LLVM ever care about the difference between opaque types?

394 Views Asked by At

According to https://llvm.org/docs/LangRef.html#opaque-structure-types

Opaque structure types are used to represent structure types that do not have a body specified. This corresponds (for example) to the C notion of a forward declared structure. They can be named (%X) or unnamed (%52).

Seems straightforward enough, but one thing I'm trying to figure out is this. Suppose we have two opaque types:

%X = type opaque
%Y = type opaque

Does LLVM ever care about the fact that these are two different types? Is there any scenario in which substituting X for Y would cause different code to be generated? One possibility that comes to mind is type-based alias analysis, but then, it is not possible to dereference an opaque type, so it looks like there is no way for it to make a difference. Am I missing anything?

0

There are 0 best solutions below