[llvm] a1677bd - [LICM] Add additional "free instruction" tests (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 25 01:52:00 PDT 2023
Author: Nikita Popov
Date: 2023-04-25T10:51:50+02:00
New Revision: a1677bda7975a0f690292587a04b9e053aacd1dc
URL: https://github.com/llvm/llvm-project/commit/a1677bda7975a0f690292587a04b9e053aacd1dc
DIFF: https://github.com/llvm/llvm-project/commit/a1677bda7975a0f690292587a04b9e053aacd1dc.diff
LOG: [LICM] Add additional "free instruction" tests (NFC)
Added:
Modified:
llvm/test/Transforms/LICM/sinking.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/LICM/sinking.ll b/llvm/test/Transforms/LICM/sinking.ll
index 153601ac642d..01eb3b72b973 100644
--- a/llvm/test/Transforms/LICM/sinking.ll
+++ b/llvm/test/Transforms/LICM/sinking.ll
@@ -1,6 +1,7 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -passes=licm -S -verify-memoryssa | FileCheck %s
+target datalayout = "n64"
declare i32 @strlen(ptr) readonly nounwind willreturn
@@ -997,6 +998,57 @@ out:
ret i32 %x
}
+declare void @use.i32(i32)
+declare void @use.i64(i64)
+
+define i32 @duplicate_freeze(i1 %c, i32 %x) {
+; CHECK-LABEL: @duplicate_freeze(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[FR:%.*]] = freeze i32 [[X:%.*]]
+; CHECK-NEXT: br label [[LOOP:%.*]]
+; CHECK: loop:
+; CHECK-NEXT: call void @use.i32(i32 [[FR]])
+; CHECK-NEXT: br i1 [[C:%.*]], label [[LOOP]], label [[EXIT:%.*]]
+; CHECK: exit:
+; CHECK-NEXT: [[FR_LE:%.*]] = freeze i32 [[X]]
+; CHECK-NEXT: ret i32 [[FR_LE]]
+;
+entry:
+ br label %loop
+
+loop:
+ %fr = freeze i32 %x
+ call void @use.i32(i32 %fr)
+ br i1 %c, label %loop, label %exit
+
+exit:
+ ret i32 %fr
+}
+
+define i64 @duplicate_ptrtoint(i1 %c, ptr %p) {
+; CHECK-LABEL: @duplicate_ptrtoint(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[PI:%.*]] = ptrtoint ptr [[P:%.*]] to i64
+; CHECK-NEXT: br label [[LOOP:%.*]]
+; CHECK: loop:
+; CHECK-NEXT: call void @use.i64(i64 [[PI]])
+; CHECK-NEXT: br i1 [[C:%.*]], label [[LOOP]], label [[EXIT:%.*]]
+; CHECK: exit:
+; CHECK-NEXT: [[PI_LE:%.*]] = ptrtoint ptr [[P]] to i64
+; CHECK-NEXT: ret i64 [[PI_LE]]
+;
+entry:
+ br label %loop
+
+loop:
+ %pi = ptrtoint ptr %p to i64
+ call void @use.i64(i64 %pi)
+ br i1 %c, label %loop, label %exit
+
+exit:
+ ret i64 %pi
+}
+
declare void @may_throw()
declare void @may_throw2()
declare i32 @__CxxFrameHandler3(...)
More information about the llvm-commits
mailing list