[OpaquePtr] Enumerate GlobalAlias value type
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 25 Jun 2021 19:19:08 +0000 (21:19 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 25 Jun 2021 19:21:10 +0000 (21:21 +0200)
The type is no longer implicitly enumerated through the pointer
type.

llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
llvm/test/Other/force-opaque-ptrs.ll

index c347c40..2be3ca7 100644 (file)
@@ -378,8 +378,10 @@ ValueEnumerator::ValueEnumerator(const Module &M,
   }
 
   // Enumerate the aliases.
-  for (const GlobalAlias &GA : M.aliases())
+  for (const GlobalAlias &GA : M.aliases()) {
     EnumerateValue(&GA);
+    EnumerateType(GA.getValueType());
+  }
 
   // Enumerate the ifuncs.
   for (const GlobalIFunc &GIF : M.ifuncs())
index 81dfd22..e80fdce 100644 (file)
@@ -1,4 +1,5 @@
 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature
+; RUN: llvm-as --force-opaque-pointers < %s | llvm-dis --force-opaque-pointers | FileCheck %s
 ; RUN: llvm-as < %s | llvm-dis --force-opaque-pointers | FileCheck %s
 ; RUN: opt --force-opaque-pointers < %s -S | FileCheck %s
 
@@ -9,6 +10,9 @@
 @g2 = global i18 0
 @ga = alias i18, i18* @g2
 
+; CHECK: @ga2 = alias i19, ptr @g2
+@ga2 = alias i19, i19* bitcast (i18* @g2 to i19*)
+
 define void @f(i32* %p) {
 ; CHECK-LABEL: define {{[^@]+}}@f
 ; CHECK-SAME: (ptr [[P:%.*]]) {