[llvm] 04b75c0 - [InstCombine] Look through invariant group intrinsics when removing malloc

Arthur Eubanks via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 15 09:02:47 PDT 2021


Author: Arthur Eubanks
Date: 2021-07-15T09:02:40-07:00
New Revision: 04b75c05b033d5c7fd503de90b257be713c95e00

URL: https://github.com/llvm/llvm-project/commit/04b75c05b033d5c7fd503de90b257be713c95e00
DIFF: https://github.com/llvm/llvm-project/commit/04b75c05b033d5c7fd503de90b257be713c95e00.diff

LOG: [InstCombine] Look through invariant group intrinsics when removing malloc

Fixes some regressions with -fstrict-vtable-pointers in llvm-test-suite.

Reviewed By: lebedev.ri

Differential Revision: https://reviews.llvm.org/D106017

Added: 
    

Modified: 
    llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
    llvm/test/Transforms/InstCombine/malloc-free-delete.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
index 7bbb4d512347..9646a8c7d02d 100644
--- a/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
@@ -2600,6 +2600,11 @@ static bool isAllocSiteRemovable(Instruction *AI,
           case Intrinsic::objectsize:
             Users.emplace_back(I);
             continue;
+          case Intrinsic::launder_invariant_group:
+          case Intrinsic::strip_invariant_group:
+            Users.emplace_back(I);
+            Worklist.push_back(I);
+            continue;
           }
         }
 

diff  --git a/llvm/test/Transforms/InstCombine/malloc-free-delete.ll b/llvm/test/Transforms/InstCombine/malloc-free-delete.ll
index 646b9e0efa9f..55337d41d675 100644
--- a/llvm/test/Transforms/InstCombine/malloc-free-delete.ll
+++ b/llvm/test/Transforms/InstCombine/malloc-free-delete.ll
@@ -440,11 +440,6 @@ declare i8* @llvm.strip.invariant.group(i8*)
 
 define void @test17() {
 ; CHECK-LABEL: @test17(
-; CHECK-NEXT:    [[NW1:%.*]] = call dereferenceable(32) i8* @_Znwm(i64 32) #[[ATTR10]]
-; CHECK-NEXT:    [[NW2:%.*]] = call i8* @llvm.launder.invariant.group.p0i8(i8* nonnull [[NW1]])
-; CHECK-NEXT:    [[TMP1:%.*]] = call i8* @llvm.strip.invariant.group.p0i8(i8* nonnull [[NW1]])
-; CHECK-NEXT:    store i8 1, i8* [[TMP1]], align 1
-; CHECK-NEXT:    call void @_ZdlPv(i8* [[NW2]]) #[[ATTR10]]
 ; CHECK-NEXT:    ret void
 ;
   %nw1 = call i8* @_Znwm(i64 32) builtin


        


More information about the llvm-commits mailing list