[llvm] 7206ad0 - [OpaquePtr] Allow alias to opaque pointer
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 25 02:16:47 PDT 2021
Author: Nikita Popov
Date: 2021-06-25T11:16:36+02:00
New Revision: 7206ad04d585fd5300020f883debaef4429e03ee
URL: https://github.com/llvm/llvm-project/commit/7206ad04d585fd5300020f883debaef4429e03ee
DIFF: https://github.com/llvm/llvm-project/commit/7206ad04d585fd5300020f883debaef4429e03ee.diff
LOG: [OpaquePtr] Allow alias to opaque pointer
By relaxing the LLParser pointer type assertion.
Added:
Modified:
llvm/lib/AsmParser/LLParser.cpp
llvm/test/Other/force-opaque-ptrs.ll
Removed:
################################################################################
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp
index 599ce6ff5d83c..be3b7358270eb 100644
--- a/llvm/lib/AsmParser/LLParser.cpp
+++ b/llvm/lib/AsmParser/LLParser.cpp
@@ -980,7 +980,7 @@ bool LLParser::parseIndirectSymbol(const std::string &Name, LocTy NameLoc,
return error(AliaseeLoc, "An alias or ifunc must have pointer type");
unsigned AddrSpace = PTy->getAddressSpace();
- if (IsAlias && Ty != PTy->getElementType()) {
+ if (IsAlias && !PTy->isOpaqueOrPointeeTypeMatches(Ty)) {
return error(
ExplicitTypeLoc,
typeComparisonErrorMessage(
diff --git a/llvm/test/Other/force-opaque-ptrs.ll b/llvm/test/Other/force-opaque-ptrs.ll
index 530b8fb04c141..81dfd22458dcb 100644
--- a/llvm/test/Other/force-opaque-ptrs.ll
+++ b/llvm/test/Other/force-opaque-ptrs.ll
@@ -5,6 +5,10 @@
; CHECK: @g = external global i16
@g = external global i16
+; CHECK: @ga = alias i18, ptr @g2
+ at g2 = global i18 0
+ at ga = alias i18, i18* @g2
+
define void @f(i32* %p) {
; CHECK-LABEL: define {{[^@]+}}@f
; CHECK-SAME: (ptr [[P:%.*]]) {
More information about the llvm-commits
mailing list