1*9880d681SAndroid Build Coastguard Worker; Make sure that functions are removed successfully if they are referred to by 2*9880d681SAndroid Build Coastguard Worker; a global that is dead. Make sure any globals they refer to die as well. 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -globaldce -S | FileCheck %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: foo 7*9880d681SAndroid Build Coastguard Worker;; Unused, kills %foo 8*9880d681SAndroid Build Coastguard Worker@b = internal global i32 ()* @foo ; <i32 ()**> [#uses=0] 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker;; Should die when function %foo is killed 11*9880d681SAndroid Build Coastguard Worker@foo.upgrd.1 = internal global i32 7 ; <i32*> [#uses=1] 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker ;; dies when %b dies. 14*9880d681SAndroid Build Coastguard Workerdefine internal i32 @foo() { 15*9880d681SAndroid Build Coastguard Worker %ret = load i32, i32* @foo.upgrd.1 ; <i32> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker ret i32 %ret 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19