[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