44 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt < %s -passes=sccp -S | FileCheck %s3 4; Test that SCCP has basic knowledge of when div can nuke overdefined values.5 6; 0 / X = 0 even if X is overdefined.7define i32 @test1(i32 %foo) {8; CHECK-LABEL: define i32 @test19; CHECK-SAME: (i32 [[FOO:%.*]]) {10; CHECK-NEXT: ret i32 011;12 %tinkywinky = udiv i32 0, %foo13 ret i32 %tinkywinky14}15 16define i32 @test2(i32 %foo) {17; CHECK-LABEL: define i32 @test218; CHECK-SAME: (i32 [[FOO:%.*]]) {19; CHECK-NEXT: ret i32 020;21 %tinkywinky = sdiv i32 0, %foo22 ret i32 %tinkywinky23}24 25define i32 @test3(i32 %foo) {26; CHECK-LABEL: define i32 @test327; CHECK-SAME: (i32 [[FOO:%.*]]) {28; CHECK-NEXT: [[TINKYWINKY:%.*]] = udiv i32 [[FOO]], 029; CHECK-NEXT: ret i32 [[TINKYWINKY]]30;31 %tinkywinky = udiv i32 %foo, 032 ret i32 %tinkywinky33}34 35define i32 @test4(i32 %foo) {36; CHECK-LABEL: define i32 @test437; CHECK-SAME: (i32 [[FOO:%.*]]) {38; CHECK-NEXT: [[TINKYWINKY:%.*]] = sdiv i32 [[FOO]], 039; CHECK-NEXT: ret i32 [[TINKYWINKY]]40;41 %tinkywinky = sdiv i32 %foo, 042 ret i32 %tinkywinky43}44