1*aa9bdd50SMatt Arsenault; RUN: llvm-reduce -abort-on-invalid-reduction --delta-passes=functions --test FileCheck --test-arg --check-prefix=CHECK-INTERESTINGNESS --test-arg %s --test-arg --input-file %s -o %t.0 2*aa9bdd50SMatt Arsenault; RUN: FileCheck --implicit-check-not=define --check-prefix=CHECK-FINAL %s < %t.0 3*aa9bdd50SMatt Arsenault 4*aa9bdd50SMatt Arsenault; Check a case where llvm.used is fully deleted 5*aa9bdd50SMatt Arsenault; RUN: llvm-reduce -abort-on-invalid-reduction --delta-passes=functions --test FileCheck --test-arg --check-prefixes=CHECK-OTHER --test-arg %s --test-arg --input-file %s -o %t.1 6*aa9bdd50SMatt Arsenault; RUN: FileCheck --implicit-check-not=define --check-prefix=CHECK-REMOVED %s < %t.1 7*aa9bdd50SMatt Arsenault 8*aa9bdd50SMatt Arsenault@llvm.used = appending global [2 x ptr] [ptr @kept_used, ptr @removed_used ] 9*aa9bdd50SMatt Arsenault@llvm.compiler.used = appending global [2 x ptr] [ptr @kept_compiler_used, ptr @removed_compiler_used ] 10*aa9bdd50SMatt Arsenault 11*aa9bdd50SMatt Arsenault 12*aa9bdd50SMatt Arsenault; CHECK-REMOVED-NOT: @llvm.used 13*aa9bdd50SMatt Arsenault; CHECK-REMOVED-NOT: @llvm.compiler.used 14*aa9bdd50SMatt Arsenault 15*aa9bdd50SMatt Arsenault; CHECK-FINAL: @llvm.used = appending global [1 x ptr] [ptr @kept_used] 16*aa9bdd50SMatt Arsenault; CHECK-FINAL: @llvm.compiler.used = appending global [1 x ptr] [ptr @kept_compiler_used] 17*aa9bdd50SMatt Arsenault 18*aa9bdd50SMatt Arsenault 19*aa9bdd50SMatt Arsenault; CHECK-INTERESTINGNESS: define void @kept_used( 20*aa9bdd50SMatt Arsenault; CHECK-FINAL: define void @kept_used( 21*aa9bdd50SMatt Arsenaultdefine void @kept_used() { 22*aa9bdd50SMatt Arsenault ret void 23*aa9bdd50SMatt Arsenault} 24*aa9bdd50SMatt Arsenault 25*aa9bdd50SMatt Arsenaultdefine void @removed_used() { 26*aa9bdd50SMatt Arsenault ret void 27*aa9bdd50SMatt Arsenault} 28*aa9bdd50SMatt Arsenault 29*aa9bdd50SMatt Arsenault; CHECK-INTERESTINGNESS: define void @kept_compiler_used( 30*aa9bdd50SMatt Arsenault; CHECK-FINAL: define void @kept_compiler_used( 31*aa9bdd50SMatt Arsenaultdefine void @kept_compiler_used() { 32*aa9bdd50SMatt Arsenault ret void 33*aa9bdd50SMatt Arsenault} 34*aa9bdd50SMatt Arsenault 35*aa9bdd50SMatt Arsenaultdefine void @removed_compiler_used() { 36*aa9bdd50SMatt Arsenault ret void 37*aa9bdd50SMatt Arsenault} 38*aa9bdd50SMatt Arsenault 39*aa9bdd50SMatt Arsenault; CHECK-OTHER: define void @foo( 40*aa9bdd50SMatt Arsenault; CHECK-REMOVED: define void @foo( 41*aa9bdd50SMatt Arsenaultdefine void @foo() { 42*aa9bdd50SMatt Arsenault ret void 43*aa9bdd50SMatt Arsenault} 44*aa9bdd50SMatt Arsenault 45