53 lines · plain
1; RUN: llvm-link %s %p/Inputs/drop-attribute.ll -S -o - | FileCheck %s2 3; Test case that checks that nocallback attribute is dropped during linking.4 5; CHECK: define i32 @main()6; CHECK-NEXT: entry:7; CHECK-NEXT: call void @test_nocallback_definition()8; Test that checks that nocallback attribute on a call-site in a call instruction is dropped.9; CHECK-NEXT: call void @test_nocallback_call_site(){{$}}10; CHECK-NEXT: %0 = call float @llvm.sqrt.f32(float undef)11; CHECK-NEXT: call void @test_nocallback_declaration_definition_not_linked_in()12; CHECK-NEXT: call void @test_nocallback_declaration_definition_linked_in()13; Test that checks that nocallback attribute on a call-site in an invoke instruction is dropped.14; CHECK-NEXT: invoke void @test_nocallback_call_site(){{$}}15define i32 @main() personality i8 0 {16entry:17 call void @test_nocallback_definition()18 call void @test_nocallback_call_site() nocallback19 call float @llvm.sqrt.f32(float undef)20 call void @test_nocallback_declaration_definition_not_linked_in()21 call void @test_nocallback_declaration_definition_linked_in()22 invoke void @test_nocallback_call_site() nocallback23 to label %ret unwind label %unw24unw:25 %tmp = landingpad i8 cleanup26 br label %ret27ret:28 ret i32 029}30 31; Test that checks that nocallback attribute on a definition is dropped.32; CHECK: define void @test_nocallback_definition()33define void @test_nocallback_definition() nocallback {34 ret void35}36 37; Test that checks that nocallback attribute on a call site is dropped.38; CHECK: declare void @test_nocallback_call_site(){{$}}39declare void @test_nocallback_call_site()40 41; Test that checks that nocallback attribute on an intrinsic is NOT dropped.42; CHECK: ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn43; CHECK-NEXT: declare float @llvm.sqrt.f32(float) #044declare float @llvm.sqrt.f32(float) nocallback45 46; Test that checks that nocallback attribute on a declaration when a definition is not linked in is dropped.47; CHECK: declare void @test_nocallback_declaration_definition_not_linked_in(){{$}}48declare void @test_nocallback_declaration_definition_not_linked_in() nocallback49 50; Test that checks that nocallback attribute on a declaration when a definition is linked in is dropped.51; CHECK: define void @test_nocallback_declaration_definition_linked_in() {{{$}}52declare void @test_nocallback_declaration_definition_linked_in() nocallback53