[llvm] 213193c - [test] precommit coverage for D117249

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 13 13:42:46 PST 2022


Author: Philip Reames
Date: 2022-01-13T13:42:39-08:00
New Revision: 213193c184d5c7aa80748c7e4e5e2c282ba20486

URL: https://github.com/llvm/llvm-project/commit/213193c184d5c7aa80748c7e4e5e2c282ba20486
DIFF: https://github.com/llvm/llvm-project/commit/213193c184d5c7aa80748c7e4e5e2c282ba20486.diff

LOG: [test] precommit coverage for D117249

Added: 
    llvm/test/Transforms/GlobalOpt/malloc-promote-5.ll

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/GlobalOpt/malloc-promote-5.ll b/llvm/test/Transforms/GlobalOpt/malloc-promote-5.ll
new file mode 100644
index 000000000000..efd74cafa60d
--- /dev/null
+++ b/llvm/test/Transforms/GlobalOpt/malloc-promote-5.ll
@@ -0,0 +1,56 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -passes=globalopt -S < %s | FileCheck %s
+; RUN: opt -passes=globalopt -S < %s | FileCheck %s
+
+ at g = internal global i32* null, align 8
+
+define signext i32 @f() local_unnamed_addr {
+; CHECK-LABEL: @f(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[CALL:%.*]] = call i8* @malloc(i64 4)
+; CHECK-NEXT:    [[B:%.*]] = bitcast i8* [[CALL]] to i32*
+; CHECK-NEXT:    store i32* [[B]], i32** @g, align 8
+; CHECK-NEXT:    [[B2:%.*]] = bitcast i8* [[CALL]] to i16*
+; CHECK-NEXT:    store i16 -1, i16* [[B2]], align 2
+; CHECK-NEXT:    ret i32 0
+;
+entry:
+  %call = call i8* @malloc(i64 4)
+  %b = bitcast i8* %call to i32*
+  store i32* %b, i32** @g, align 8
+  %b2 = bitcast i8* %call to i16*
+  store i16 -1, i16* %b2
+  ret i32 0
+}
+
+define signext i32 @main() {
+; CHECK-LABEL: @main(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[CALL:%.*]] = call signext i32 @f()
+; CHECK-NEXT:    call void @f1()
+; CHECK-NEXT:    [[V0:%.*]] = load i32*, i32** @g, align 8
+; CHECK-NEXT:    store i32 1, i32* [[V0]], align 4
+; CHECK-NEXT:    call void @f1()
+; CHECK-NEXT:    [[V1:%.*]] = load i8*, i8** bitcast (i32** @g to i8**), align 8
+; CHECK-NEXT:    store i8 2, i8* [[V1]], align 4
+; CHECK-NEXT:    call void @f1()
+; CHECK-NEXT:    [[V2:%.*]] = load i32*, i32** @g, align 8
+; CHECK-NEXT:    [[RES:%.*]] = load i32, i32* [[V2]], align 4
+; CHECK-NEXT:    ret i32 [[RES]]
+;
+entry:
+  %call = call signext i32 @f()
+  call void @f1()
+  %v0 = load i32*, i32** @g, align 8
+  store i32 1, i32* %v0, align 4
+  call void @f1()
+  %v1 = load i8*, i8** bitcast (i32** @g to i8**), align 8
+  store i8 2, i8* %v1, align 4
+  call void @f1()
+  %v2 = load i32*, i32** @g, align 8
+  %res = load i32, i32* %v2, align 4
+  ret i32 %res
+}
+
+declare noalias align 16 i8* @malloc(i64)
+declare void @f1()


        


More information about the llvm-commits mailing list