|  | ;; Test that the global merge pass does not pool globals that are | 
|  | ;; in llvm.used or in llvm.compiler.used. | 
|  |  | 
|  | ; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple powerpc-ibm-aix-xcoff \ | 
|  | ; RUN:   -data-sections=false < %s | \ | 
|  | ; RUN:   FileCheck %s | 
|  |  | 
|  | ; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple powerpc64-ibm-aix-xcoff \ | 
|  | ; RUN:   -data-sections=false < %s | \ | 
|  | ; RUN:   FileCheck %s | 
|  |  | 
|  | @keep_this = internal constant [5 x i8] c"keep1", align 1 | 
|  | @keep_this2 = internal constant [5 x i8] c"keep2", align 1 | 
|  | @.str.1 = private unnamed_addr constant [12 x i8] c"str1_STRING\00", align 1 | 
|  | @.str.2 = private unnamed_addr constant [12 x i8] c"str2_STRING\00", align 1 | 
|  | @.str.3 = private unnamed_addr constant [12 x i8] c"str3_STRING\00", align 1 | 
|  | @llvm.used = appending global [1 x ptr] [ptr @keep_this], section "llvm.metadata" | 
|  | @llvm.compiler.used = appending global [1 x ptr] [ptr @keep_this2], section "llvm.metadata" | 
|  |  | 
|  | declare signext i32 @callee(ptr noundef) | 
|  |  | 
|  | define dso_local signext i32 @keep1() { | 
|  | entry: | 
|  | %call = tail call signext i32 @callee(ptr noundef nonnull @keep_this) | 
|  | ret i32 %call | 
|  | } | 
|  |  | 
|  | define dso_local signext i32 @keep2() { | 
|  | entry: | 
|  | %call = tail call signext i32 @callee(ptr noundef nonnull @keep_this2) | 
|  | ret i32 %call | 
|  | } | 
|  |  | 
|  | define dso_local signext i32 @str1() { | 
|  | entry: | 
|  | %call = tail call signext i32 @callee(ptr noundef nonnull @.str.1) | 
|  | ret i32 %call | 
|  | } | 
|  |  | 
|  | define dso_local signext i32 @str2() { | 
|  | entry: | 
|  | %call = tail call signext i32 @callee(ptr noundef nonnull @.str.2) | 
|  | ret i32 %call | 
|  | } | 
|  |  | 
|  | define dso_local signext i32 @str3() { | 
|  | entry: | 
|  | %call = tail call signext i32 @callee(ptr noundef nonnull @.str.3) | 
|  | ret i32 %call | 
|  | } | 
|  |  | 
|  | ; CHECK:    .lglobl keep_this | 
|  | ; CHECK:  keep_this: | 
|  | ; CHECK:    .lglobl keep_this2 | 
|  | ; CHECK:  keep_this2: | 
|  | ; CHECK:  L.._MergedGlobals: | 
|  | ; CHECK:    .string "str1_STRING" | 
|  | ; CHECK:    .string "str2_STRING" | 
|  | ; CHECK:    .string "str3_STRING" |