1*935bbbbdSZaara Syeda;; Test that the global merge pass does not pool globals that are 2d896b1f5SStefan Pintilie;; in llvm.used or in llvm.compiler.used. 3d896b1f5SStefan Pintilie 4ccddd136SZaara Syeda; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple powerpc-ibm-aix-xcoff \ 5aaa37d67SZaara Syeda; RUN: -data-sections=false < %s | \ 6d896b1f5SStefan Pintilie; RUN: FileCheck %s 7d896b1f5SStefan Pintilie 8ccddd136SZaara Syeda; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple powerpc64-ibm-aix-xcoff \ 9aaa37d67SZaara Syeda; RUN: -data-sections=false < %s | \ 10d896b1f5SStefan Pintilie; RUN: FileCheck %s 11d896b1f5SStefan Pintilie 12d896b1f5SStefan Pintilie@keep_this = internal constant [5 x i8] c"keep1", align 1 13d896b1f5SStefan Pintilie@keep_this2 = internal constant [5 x i8] c"keep2", align 1 14d896b1f5SStefan Pintilie@.str.1 = private unnamed_addr constant [12 x i8] c"str1_STRING\00", align 1 15d896b1f5SStefan Pintilie@.str.2 = private unnamed_addr constant [12 x i8] c"str2_STRING\00", align 1 16d896b1f5SStefan Pintilie@.str.3 = private unnamed_addr constant [12 x i8] c"str3_STRING\00", align 1 17d896b1f5SStefan Pintilie@llvm.used = appending global [1 x ptr] [ptr @keep_this], section "llvm.metadata" 18d896b1f5SStefan Pintilie@llvm.compiler.used = appending global [1 x ptr] [ptr @keep_this2], section "llvm.metadata" 19d896b1f5SStefan Pintilie 20d896b1f5SStefan Pintiliedeclare signext i32 @callee(ptr noundef) 21d896b1f5SStefan Pintilie 22d896b1f5SStefan Pintiliedefine dso_local signext i32 @keep1() { 23d896b1f5SStefan Pintilieentry: 24d896b1f5SStefan Pintilie %call = tail call signext i32 @callee(ptr noundef nonnull @keep_this) 25d896b1f5SStefan Pintilie ret i32 %call 26d896b1f5SStefan Pintilie} 27d896b1f5SStefan Pintilie 28d896b1f5SStefan Pintiliedefine dso_local signext i32 @keep2() { 29d896b1f5SStefan Pintilieentry: 30d896b1f5SStefan Pintilie %call = tail call signext i32 @callee(ptr noundef nonnull @keep_this2) 31d896b1f5SStefan Pintilie ret i32 %call 32d896b1f5SStefan Pintilie} 33d896b1f5SStefan Pintilie 34d896b1f5SStefan Pintiliedefine dso_local signext i32 @str1() { 35d896b1f5SStefan Pintilieentry: 36d896b1f5SStefan Pintilie %call = tail call signext i32 @callee(ptr noundef nonnull @.str.1) 37d896b1f5SStefan Pintilie ret i32 %call 38d896b1f5SStefan Pintilie} 39d896b1f5SStefan Pintilie 40d896b1f5SStefan Pintiliedefine dso_local signext i32 @str2() { 41d896b1f5SStefan Pintilieentry: 42d896b1f5SStefan Pintilie %call = tail call signext i32 @callee(ptr noundef nonnull @.str.2) 43d896b1f5SStefan Pintilie ret i32 %call 44d896b1f5SStefan Pintilie} 45d896b1f5SStefan Pintilie 46d896b1f5SStefan Pintiliedefine dso_local signext i32 @str3() { 47d896b1f5SStefan Pintilieentry: 48d896b1f5SStefan Pintilie %call = tail call signext i32 @callee(ptr noundef nonnull @.str.3) 49d896b1f5SStefan Pintilie ret i32 %call 50d896b1f5SStefan Pintilie} 51d896b1f5SStefan Pintilie 52d896b1f5SStefan Pintilie; CHECK: .lglobl keep_this 53d896b1f5SStefan Pintilie; CHECK: keep_this: 54d896b1f5SStefan Pintilie; CHECK: .lglobl keep_this2 55d896b1f5SStefan Pintilie; CHECK: keep_this2: 56aaa37d67SZaara Syeda; CHECK: L.._MergedGlobals: 57d896b1f5SStefan Pintilie; CHECK: .string "str1_STRING" 58d896b1f5SStefan Pintilie; CHECK: .string "str2_STRING" 59d896b1f5SStefan Pintilie; CHECK: .string "str3_STRING" 60