brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1021 B · 67c28dc Raw
38 lines · plain
1; RUN: llc < %s -stop-after=finalize-isel -mtriple=x86_64-unknown-linux - | FileCheck %s --implicit-check-not FAKE_USE2; Fake uses following tail calls should be pulled in front3; of the TCRETURN instruction. Fake uses using something defined by4; the tail call or after it should be suppressed.5 6; CHECK: name:{{ +}}bar7; CHECK: body:8; CHECK: bb.0.{{.*}}:9; CHECK: %0:{{.*}}= COPY10; CHECK: FAKE_USE %011; CHECK: TCRETURN12 13; CHECK: name:{{ +}}baz14; CHECK: body:15; CHECK: bb.0.{{.*}}:16; CHECK: %0:{{.*}}= COPY17; CHECK: FAKE_USE %018; CHECK: TCRETURN19 20define void @bar(i32 %v) optdebug {21entry:22  %call = tail call i32 @_Z3fooi(i32 %v)23  %mul = mul nsw i32 %call, 324  notail call void (...) @llvm.fake.use(i32 %mul)25  notail call void (...) @llvm.fake.use(i32 %call)26  notail call void (...) @llvm.fake.use(i32 %v)27  ret void28}29 30define i32 @baz(i32 %v) optdebug {31entry:32  %call = tail call i32 @_Z3fooi(i32 %v)33  notail call void (...) @llvm.fake.use(i32 %v)34  ret i32 %call35}36 37declare i32 @_Z3fooi(i32) local_unnamed_addr38