Files
clang-p2996/llvm/test/Transforms/EarlyCSE/flags.ll
Nikita Popov 3c514d31d7 [EarlyCSE] Update tests to use opaque pointers (NFC)
Update the EarlyCSE tests to use opaque pointers.

Worth noting that this leaves some bitcast ptr to ptr instructions
in the input IR behind which are no longer necessary. This is
because these use numbered instructions, so it's hard to drop them
in an automated fashion (as it would require renumbering all other
instructions as well). I'm leaving that as a problem for another day.

The test updates have been performed using
https://gist.github.com/nikic/98357b71fd67756b0f064c9517b62a34.

Differential Revision: https://reviews.llvm.org/D127278
2022-06-10 09:53:35 +02:00

50 lines
1.7 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -early-cse -earlycse-debug-hash -S < %s | FileCheck %s
; RUN: opt -basic-aa -early-cse-memssa -S < %s | FileCheck %s
declare void @use(i1)
define void @test1(float %x, float %y) {
; CHECK-LABEL: @test1(
; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq float [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT: call void @use(i1 [[CMP1]])
; CHECK-NEXT: call void @use(i1 [[CMP1]])
; CHECK-NEXT: ret void
;
%cmp1 = fcmp nnan oeq float %y, %x
%cmp2 = fcmp oeq float %x, %y
call void @use(i1 %cmp1)
call void @use(i1 %cmp2)
ret void
}
declare void @use.i8(ptr)
define void @test_inbounds_program_ub_if_first_gep_poison(ptr %ptr, i64 %n) {
; CHECK-LABEL: @test_inbounds_program_ub_if_first_gep_poison(
; CHECK-NEXT: [[ADD_PTR_1:%.*]] = getelementptr inbounds i8, ptr [[PTR:%.*]], i64 [[N:%.*]]
; CHECK-NEXT: call void @use.i8(ptr noundef [[ADD_PTR_1]])
; CHECK-NEXT: call void @use.i8(ptr [[ADD_PTR_1]])
; CHECK-NEXT: ret void
;
%add.ptr.1 = getelementptr inbounds i8, ptr %ptr, i64 %n
call void @use.i8(ptr noundef %add.ptr.1)
%add.ptr.2 = getelementptr i8, ptr %ptr, i64 %n
call void @use.i8(ptr %add.ptr.2)
ret void
}
define void @test_inbounds_program_not_ub_if_first_gep_poison(ptr %ptr, i64 %n) {
; CHECK-LABEL: @test_inbounds_program_not_ub_if_first_gep_poison(
; CHECK-NEXT: [[ADD_PTR_1:%.*]] = getelementptr i8, ptr [[PTR:%.*]], i64 [[N:%.*]]
; CHECK-NEXT: call void @use.i8(ptr [[ADD_PTR_1]])
; CHECK-NEXT: call void @use.i8(ptr [[ADD_PTR_1]])
; CHECK-NEXT: ret void
;
%add.ptr.1 = getelementptr inbounds i8, ptr %ptr, i64 %n
call void @use.i8(ptr %add.ptr.1)
%add.ptr.2 = getelementptr i8, ptr %ptr, i64 %n
call void @use.i8(ptr %add.ptr.2)
ret void
}