brintos

brintos / llvm-project-archived public Read only

0
0
Text · 42.5 KiB · 6a21a10 Raw
1200 lines · plain
1; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 \2; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX32,AIXDATA3; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr8 \4; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX64,AIXDATA5; RUN: llc -verify-machineinstrs -mtriple powerpc64-unknown-linux -mcpu=pwr8 \6; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64BE,LINUXDATA7; RUN: llc -verify-machineinstrs -mtriple powerpc64le-unknown-linux -mcpu=pwr8 \8; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64LE,LINUXDATA9 10 11;; This @GLOBALSTRING is a user of @.str which causes @.str to not get pooled.12@.str = private unnamed_addr constant [47 x i8] c"This is the global string that is at the top.\0A\00", align 113@GLOBALSTRING = dso_local local_unnamed_addr global ptr @.str, align 814 15@IntArray2 = dso_local global [7 x i32] [i32 5, i32 7, i32 9, i32 11, i32 17, i32 1235, i32 32], align 416@.str.1 = private unnamed_addr constant [12 x i8] c"str1_STRING\00", align 117@.str.2 = private unnamed_addr constant [12 x i8] c"str2_STRING\00", align 118@.str.3 = private unnamed_addr constant [12 x i8] c"str3_STRING\00", align 119@.str.4 = private unnamed_addr constant [12 x i8] c"str4_STRING\00", align 120@.str.5 = private unnamed_addr constant [183 x i8] c"longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_STRING\00", align 121@__const.str6.TheString = private unnamed_addr constant [10 x i8] c"ABCABCABC\00", align 122@.str.6 = private unnamed_addr constant [12 x i8] c"MixedString\00", align 123@__const.mixed2.IntArray = private unnamed_addr constant [7 x i32] [i32 5, i32 7, i32 9, i32 11, i32 17, i32 1235, i32 32], align 424@__const.IntArray3 = private unnamed_addr constant [14 x i64] [i64 15, i64 7, i64 19, i64 11, i64 17, i64 1235, i64 72, i64 51, i64 32, i64 231, i64 86, i64 64, i64 754, i64 281], align 825@__const.IntArray4 = private unnamed_addr constant [14 x i64] [i64 15, i64 7, i64 19, i64 11, i64 17, i64 1235, i64 72, i64 51, i64 32, i64 231, i64 86, i64 64, i64 754, i64 281], align 826@__const.IntArray5 = private unnamed_addr constant [17 x i64] [i64 15, i64 7, i64 19, i64 11, i64 17, i64 1235, i64 72, i64 51, i64 32, i64 231, i64 86, i64 64, i64 754, i64 281, i64 61, i64 63, i64 67], align 827@.str.7 = private unnamed_addr constant [20 x i8] c"Different String 01\00", align 128@.str.8 = private unnamed_addr constant [15 x i8] c"Static Global\0A\00", align 129 30;; Special alignment of 128 on this string will force it to go first and have padding added.31;; TODO: At the momment these will not be pooled because the extra alignment may be lost.32@.str.9 = private unnamed_addr constant [17 x i8] c"str9_STRING.....\00", align 12833@.str.10 = private unnamed_addr constant [17 x i8] c"str10_STRING....\00", align 12834 35;; Undef constant.36@.str.11 = private unnamed_addr constant [10 x i8] undef, align 137 38define dso_local signext i32 @str1() local_unnamed_addr #0 {39; AIX32-LABEL: str1:40; AIX32:       # %bb.0: # %entry41; AIX32-NEXT:    mflr r042; AIX32-NEXT:    stwu r1, -64(r1)43; AIX32-NEXT:    lwz r3, L..C0(r2) # @_MergedGlobals44; AIX32-NEXT:    stw r0, 72(r1)45; AIX32-NEXT:    addi r3, r3, 2046; AIX32-NEXT:    bl .callee[PR]47; AIX32-NEXT:    nop48; AIX32-NEXT:    addi r1, r1, 6449; AIX32-NEXT:    lwz r0, 8(r1)50; AIX32-NEXT:    mtlr r051; AIX32-NEXT:    blr52;53; AIX64-LABEL: str1:54; AIX64:       # %bb.0: # %entry55; AIX64-NEXT:    mflr r056; AIX64-NEXT:    stdu r1, -112(r1)57; AIX64-NEXT:    ld r3, L..C0(r2) # @_MergedGlobals58; AIX64-NEXT:    std r0, 128(r1)59; AIX64-NEXT:    addi r3, r3, 2060; AIX64-NEXT:    bl .callee[PR]61; AIX64-NEXT:    nop62; AIX64-NEXT:    addi r1, r1, 11263; AIX64-NEXT:    ld r0, 16(r1)64; AIX64-NEXT:    mtlr r065; AIX64-NEXT:    blr66;67; LINUX64BE-LABEL: str1:68; LINUX64BE:       # %bb.0: # %entry69; LINUX64BE-NEXT:    mflr r070; LINUX64BE-NEXT:    stdu r1, -112(r1)71; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha72; LINUX64BE-NEXT:    std r0, 128(r1)73; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l74; LINUX64BE-NEXT:    addi r3, r3, 2075; LINUX64BE-NEXT:    bl callee76; LINUX64BE-NEXT:    nop77; LINUX64BE-NEXT:    addi r1, r1, 11278; LINUX64BE-NEXT:    ld r0, 16(r1)79; LINUX64BE-NEXT:    mtlr r080; LINUX64BE-NEXT:    blr81;82; LINUX64LE-LABEL: str1:83; LINUX64LE:       # %bb.0: # %entry84; LINUX64LE-NEXT:    mflr r085; LINUX64LE-NEXT:    stdu r1, -32(r1)86; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha87; LINUX64LE-NEXT:    std r0, 48(r1)88; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l89; LINUX64LE-NEXT:    addi r3, r3, 2090; LINUX64LE-NEXT:    bl callee91; LINUX64LE-NEXT:    nop92; LINUX64LE-NEXT:    addi r1, r1, 3293; LINUX64LE-NEXT:    ld r0, 16(r1)94; LINUX64LE-NEXT:    mtlr r095; LINUX64LE-NEXT:    blr96entry:97  %call = tail call signext i32 @callee(ptr noundef nonnull @.str.1)98  ret i32 %call99}100 101declare signext i32 @callee(ptr noundef) local_unnamed_addr102 103define dso_local signext i32 @str2() local_unnamed_addr #0 {104; AIX32-LABEL: str2:105; AIX32:       # %bb.0: # %entry106; AIX32-NEXT:    mflr r0107; AIX32-NEXT:    stwu r1, -64(r1)108; AIX32-NEXT:    lwz r3, L..C0(r2) # @_MergedGlobals109; AIX32-NEXT:    stw r0, 72(r1)110; AIX32-NEXT:    addi r3, r3, 32111; AIX32-NEXT:    bl .callee[PR]112; AIX32-NEXT:    nop113; AIX32-NEXT:    addi r1, r1, 64114; AIX32-NEXT:    lwz r0, 8(r1)115; AIX32-NEXT:    mtlr r0116; AIX32-NEXT:    blr117;118; AIX64-LABEL: str2:119; AIX64:       # %bb.0: # %entry120; AIX64-NEXT:    mflr r0121; AIX64-NEXT:    stdu r1, -112(r1)122; AIX64-NEXT:    ld r3, L..C0(r2) # @_MergedGlobals123; AIX64-NEXT:    std r0, 128(r1)124; AIX64-NEXT:    addi r3, r3, 32125; AIX64-NEXT:    bl .callee[PR]126; AIX64-NEXT:    nop127; AIX64-NEXT:    addi r1, r1, 112128; AIX64-NEXT:    ld r0, 16(r1)129; AIX64-NEXT:    mtlr r0130; AIX64-NEXT:    blr131;132; LINUX64BE-LABEL: str2:133; LINUX64BE:       # %bb.0: # %entry134; LINUX64BE-NEXT:    mflr r0135; LINUX64BE-NEXT:    stdu r1, -112(r1)136; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha137; LINUX64BE-NEXT:    std r0, 128(r1)138; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l139; LINUX64BE-NEXT:    addi r3, r3, 32140; LINUX64BE-NEXT:    bl callee141; LINUX64BE-NEXT:    nop142; LINUX64BE-NEXT:    addi r1, r1, 112143; LINUX64BE-NEXT:    ld r0, 16(r1)144; LINUX64BE-NEXT:    mtlr r0145; LINUX64BE-NEXT:    blr146;147; LINUX64LE-LABEL: str2:148; LINUX64LE:       # %bb.0: # %entry149; LINUX64LE-NEXT:    mflr r0150; LINUX64LE-NEXT:    stdu r1, -32(r1)151; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha152; LINUX64LE-NEXT:    std r0, 48(r1)153; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l154; LINUX64LE-NEXT:    addi r3, r3, 32155; LINUX64LE-NEXT:    bl callee156; LINUX64LE-NEXT:    nop157; LINUX64LE-NEXT:    addi r1, r1, 32158; LINUX64LE-NEXT:    ld r0, 16(r1)159; LINUX64LE-NEXT:    mtlr r0160; LINUX64LE-NEXT:    blr161entry:162  %call = tail call signext i32 @callee(ptr noundef nonnull @.str.2)163  ret i32 %call164}165 166define dso_local signext i32 @str3() local_unnamed_addr #0 {167; AIX32-LABEL: str3:168; AIX32:       # %bb.0: # %entry169; AIX32-NEXT:    mflr r0170; AIX32-NEXT:    stwu r1, -64(r1)171; AIX32-NEXT:    stw r0, 72(r1)172; AIX32-NEXT:    stw r30, 56(r1) # 4-byte Folded Spill173; AIX32-NEXT:    lwz r30, L..C0(r2) # @_MergedGlobals174; AIX32-NEXT:    addi r3, r30, 44175; AIX32-NEXT:    stw r31, 60(r1) # 4-byte Folded Spill176; AIX32-NEXT:    bl .callee[PR]177; AIX32-NEXT:    nop178; AIX32-NEXT:    mr r31, r3179; AIX32-NEXT:    addi r3, r30, 32180; AIX32-NEXT:    bl .callee[PR]181; AIX32-NEXT:    nop182; AIX32-NEXT:    add r3, r3, r31183; AIX32-NEXT:    lwz r31, 60(r1) # 4-byte Folded Reload184; AIX32-NEXT:    lwz r30, 56(r1) # 4-byte Folded Reload185; AIX32-NEXT:    addi r1, r1, 64186; AIX32-NEXT:    lwz r0, 8(r1)187; AIX32-NEXT:    mtlr r0188; AIX32-NEXT:    blr189;190; AIX64-LABEL: str3:191; AIX64:       # %bb.0: # %entry192; AIX64-NEXT:    mflr r0193; AIX64-NEXT:    stdu r1, -128(r1)194; AIX64-NEXT:    std r0, 144(r1)195; AIX64-NEXT:    std r30, 112(r1) # 8-byte Folded Spill196; AIX64-NEXT:    ld r30, L..C0(r2) # @_MergedGlobals197; AIX64-NEXT:    addi r3, r30, 44198; AIX64-NEXT:    std r31, 120(r1) # 8-byte Folded Spill199; AIX64-NEXT:    bl .callee[PR]200; AIX64-NEXT:    nop201; AIX64-NEXT:    mr r31, r3202; AIX64-NEXT:    addi r3, r30, 32203; AIX64-NEXT:    bl .callee[PR]204; AIX64-NEXT:    nop205; AIX64-NEXT:    add r3, r3, r31206; AIX64-NEXT:    ld r31, 120(r1) # 8-byte Folded Reload207; AIX64-NEXT:    ld r30, 112(r1) # 8-byte Folded Reload208; AIX64-NEXT:    extsw r3, r3209; AIX64-NEXT:    addi r1, r1, 128210; AIX64-NEXT:    ld r0, 16(r1)211; AIX64-NEXT:    mtlr r0212; AIX64-NEXT:    blr213;214; LINUX64BE-LABEL: str3:215; LINUX64BE:       # %bb.0: # %entry216; LINUX64BE-NEXT:    mflr r0217; LINUX64BE-NEXT:    stdu r1, -144(r1)218; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha219; LINUX64BE-NEXT:    std r0, 160(r1)220; LINUX64BE-NEXT:    std r29, 120(r1) # 8-byte Folded Spill221; LINUX64BE-NEXT:    addi r29, r3, .L_MergedGlobals@toc@l222; LINUX64BE-NEXT:    std r30, 128(r1) # 8-byte Folded Spill223; LINUX64BE-NEXT:    addi r3, r29, 44224; LINUX64BE-NEXT:    bl callee225; LINUX64BE-NEXT:    nop226; LINUX64BE-NEXT:    mr r30, r3227; LINUX64BE-NEXT:    addi r3, r29, 32228; LINUX64BE-NEXT:    bl callee229; LINUX64BE-NEXT:    nop230; LINUX64BE-NEXT:    add r3, r3, r30231; LINUX64BE-NEXT:    ld r30, 128(r1) # 8-byte Folded Reload232; LINUX64BE-NEXT:    ld r29, 120(r1) # 8-byte Folded Reload233; LINUX64BE-NEXT:    extsw r3, r3234; LINUX64BE-NEXT:    addi r1, r1, 144235; LINUX64BE-NEXT:    ld r0, 16(r1)236; LINUX64BE-NEXT:    mtlr r0237; LINUX64BE-NEXT:    blr238;239; LINUX64LE-LABEL: str3:240; LINUX64LE:       # %bb.0: # %entry241; LINUX64LE-NEXT:    mflr r0242; LINUX64LE-NEXT:    std r29, -24(r1) # 8-byte Folded Spill243; LINUX64LE-NEXT:    std r30, -16(r1) # 8-byte Folded Spill244; LINUX64LE-NEXT:    stdu r1, -64(r1)245; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha246; LINUX64LE-NEXT:    std r0, 80(r1)247; LINUX64LE-NEXT:    addi r29, r3, .L_MergedGlobals@toc@l248; LINUX64LE-NEXT:    addi r3, r29, 44249; LINUX64LE-NEXT:    bl callee250; LINUX64LE-NEXT:    nop251; LINUX64LE-NEXT:    mr r30, r3252; LINUX64LE-NEXT:    addi r3, r29, 32253; LINUX64LE-NEXT:    bl callee254; LINUX64LE-NEXT:    nop255; LINUX64LE-NEXT:    add r3, r3, r30256; LINUX64LE-NEXT:    extsw r3, r3257; LINUX64LE-NEXT:    addi r1, r1, 64258; LINUX64LE-NEXT:    ld r0, 16(r1)259; LINUX64LE-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload260; LINUX64LE-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload261; LINUX64LE-NEXT:    mtlr r0262; LINUX64LE-NEXT:    blr263entry:264  %call = tail call signext i32 @callee(ptr noundef nonnull @.str.3)265  %call1 = tail call signext i32 @callee(ptr noundef nonnull @.str.2)266  %add = add nsw i32 %call1, %call267  ret i32 %add268}269 270define dso_local signext i32 @str4() local_unnamed_addr #0 {271; AIX32-LABEL: str4:272; AIX32:       # %bb.0: # %entry273; AIX32-NEXT:    mflr r0274; AIX32-NEXT:    stwu r1, -64(r1)275; AIX32-NEXT:    lwz r3, L..C0(r2) # @_MergedGlobals276; AIX32-NEXT:    stw r0, 72(r1)277; AIX32-NEXT:    addi r3, r3, 56278; AIX32-NEXT:    bl .callee[PR]279; AIX32-NEXT:    nop280; AIX32-NEXT:    addi r1, r1, 64281; AIX32-NEXT:    lwz r0, 8(r1)282; AIX32-NEXT:    mtlr r0283; AIX32-NEXT:    blr284;285; AIX64-LABEL: str4:286; AIX64:       # %bb.0: # %entry287; AIX64-NEXT:    mflr r0288; AIX64-NEXT:    stdu r1, -112(r1)289; AIX64-NEXT:    ld r3, L..C0(r2) # @_MergedGlobals290; AIX64-NEXT:    std r0, 128(r1)291; AIX64-NEXT:    addi r3, r3, 56292; AIX64-NEXT:    bl .callee[PR]293; AIX64-NEXT:    nop294; AIX64-NEXT:    addi r1, r1, 112295; AIX64-NEXT:    ld r0, 16(r1)296; AIX64-NEXT:    mtlr r0297; AIX64-NEXT:    blr298;299; LINUX64BE-LABEL: str4:300; LINUX64BE:       # %bb.0: # %entry301; LINUX64BE-NEXT:    mflr r0302; LINUX64BE-NEXT:    stdu r1, -112(r1)303; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha304; LINUX64BE-NEXT:    std r0, 128(r1)305; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l306; LINUX64BE-NEXT:    addi r3, r3, 56307; LINUX64BE-NEXT:    bl callee308; LINUX64BE-NEXT:    nop309; LINUX64BE-NEXT:    addi r1, r1, 112310; LINUX64BE-NEXT:    ld r0, 16(r1)311; LINUX64BE-NEXT:    mtlr r0312; LINUX64BE-NEXT:    blr313;314; LINUX64LE-LABEL: str4:315; LINUX64LE:       # %bb.0: # %entry316; LINUX64LE-NEXT:    mflr r0317; LINUX64LE-NEXT:    stdu r1, -32(r1)318; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha319; LINUX64LE-NEXT:    std r0, 48(r1)320; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l321; LINUX64LE-NEXT:    addi r3, r3, 56322; LINUX64LE-NEXT:    bl callee323; LINUX64LE-NEXT:    nop324; LINUX64LE-NEXT:    addi r1, r1, 32325; LINUX64LE-NEXT:    ld r0, 16(r1)326; LINUX64LE-NEXT:    mtlr r0327; LINUX64LE-NEXT:    blr328entry:329  %call = tail call signext i32 @callee(ptr noundef nonnull @.str.4)330  ret i32 %call331}332 333define dso_local signext i32 @str5() local_unnamed_addr #0 {334; AIX32-LABEL: str5:335; AIX32:       # %bb.0: # %entry336; AIX32-NEXT:    mflr r0337; AIX32-NEXT:    stwu r1, -64(r1)338; AIX32-NEXT:    lwz r3, L..C0(r2) # @_MergedGlobals339; AIX32-NEXT:    stw r0, 72(r1)340; AIX32-NEXT:    addi r3, r3, 736341; AIX32-NEXT:    bl .callee[PR]342; AIX32-NEXT:    nop343; AIX32-NEXT:    addi r1, r1, 64344; AIX32-NEXT:    lwz r0, 8(r1)345; AIX32-NEXT:    mtlr r0346; AIX32-NEXT:    blr347;348; AIX64-LABEL: str5:349; AIX64:       # %bb.0: # %entry350; AIX64-NEXT:    mflr r0351; AIX64-NEXT:    stdu r1, -112(r1)352; AIX64-NEXT:    ld r3, L..C0(r2) # @_MergedGlobals353; AIX64-NEXT:    std r0, 128(r1)354; AIX64-NEXT:    addi r3, r3, 736355; AIX64-NEXT:    bl .callee[PR]356; AIX64-NEXT:    nop357; AIX64-NEXT:    addi r1, r1, 112358; AIX64-NEXT:    ld r0, 16(r1)359; AIX64-NEXT:    mtlr r0360; AIX64-NEXT:    blr361;362; LINUX64BE-LABEL: str5:363; LINUX64BE:       # %bb.0: # %entry364; LINUX64BE-NEXT:    mflr r0365; LINUX64BE-NEXT:    stdu r1, -112(r1)366; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha367; LINUX64BE-NEXT:    std r0, 128(r1)368; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l369; LINUX64BE-NEXT:    addi r3, r3, 736370; LINUX64BE-NEXT:    bl callee371; LINUX64BE-NEXT:    nop372; LINUX64BE-NEXT:    addi r1, r1, 112373; LINUX64BE-NEXT:    ld r0, 16(r1)374; LINUX64BE-NEXT:    mtlr r0375; LINUX64BE-NEXT:    blr376;377; LINUX64LE-LABEL: str5:378; LINUX64LE:       # %bb.0: # %entry379; LINUX64LE-NEXT:    mflr r0380; LINUX64LE-NEXT:    stdu r1, -32(r1)381; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha382; LINUX64LE-NEXT:    std r0, 48(r1)383; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l384; LINUX64LE-NEXT:    addi r3, r3, 736385; LINUX64LE-NEXT:    bl callee386; LINUX64LE-NEXT:    nop387; LINUX64LE-NEXT:    addi r1, r1, 32388; LINUX64LE-NEXT:    ld r0, 16(r1)389; LINUX64LE-NEXT:    mtlr r0390; LINUX64LE-NEXT:    blr391entry:392  %call = tail call signext i32 @callee(ptr noundef nonnull @.str.5)393  ret i32 %call394}395 396define dso_local signext i32 @array1() local_unnamed_addr #0 {397; AIX32-LABEL: array1:398; AIX32:       # %bb.0: # %entry399; AIX32-NEXT:    mflr r0400; AIX32-NEXT:    stwu r1, -96(r1)401; AIX32-NEXT:    lwz r5, L..C0(r2) # @_MergedGlobals402; AIX32-NEXT:    li r6, 308403; AIX32-NEXT:    li r4, 12404; AIX32-NEXT:    addi r3, r1, 64405; AIX32-NEXT:    stw r0, 104(r1)406; AIX32-NEXT:    rlwimi r4, r3, 0, 30, 27407; AIX32-NEXT:    lxvw4x vs0, r5, r6408; AIX32-NEXT:    stxvw4x vs0, 0, r4409; AIX32-NEXT:    li r4, 296410; AIX32-NEXT:    lxvw4x vs0, r5, r4411; AIX32-NEXT:    stxvw4x vs0, 0, r3412; AIX32-NEXT:    bl .calleeInt[PR]413; AIX32-NEXT:    nop414; AIX32-NEXT:    addi r1, r1, 96415; AIX32-NEXT:    lwz r0, 8(r1)416; AIX32-NEXT:    mtlr r0417; AIX32-NEXT:    blr418;419; AIX64-LABEL: array1:420; AIX64:       # %bb.0: # %entry421; AIX64-NEXT:    mflr r0422; AIX64-NEXT:    stdu r1, -144(r1)423; AIX64-NEXT:    ld r3, L..C0(r2) # @_MergedGlobals424; AIX64-NEXT:    li r4, 308425; AIX64-NEXT:    std r0, 160(r1)426; AIX64-NEXT:    lxvw4x vs0, r3, r4427; AIX64-NEXT:    addi r4, r1, 124428; AIX64-NEXT:    stxvw4x vs0, 0, r4429; AIX64-NEXT:    li r4, 296430; AIX64-NEXT:    lxvw4x vs0, r3, r4431; AIX64-NEXT:    addi r3, r1, 112432; AIX64-NEXT:    stxvw4x vs0, 0, r3433; AIX64-NEXT:    bl .calleeInt[PR]434; AIX64-NEXT:    nop435; AIX64-NEXT:    addi r1, r1, 144436; AIX64-NEXT:    ld r0, 16(r1)437; AIX64-NEXT:    mtlr r0438; AIX64-NEXT:    blr439;440; LINUX64BE-LABEL: array1:441; LINUX64BE:       # %bb.0: # %entry442; LINUX64BE-NEXT:    mflr r0443; LINUX64BE-NEXT:    stdu r1, -144(r1)444; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha445; LINUX64BE-NEXT:    li r4, 308446; LINUX64BE-NEXT:    std r0, 160(r1)447; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l448; LINUX64BE-NEXT:    lxvw4x vs0, r3, r4449; LINUX64BE-NEXT:    addi r4, r1, 124450; LINUX64BE-NEXT:    stxvw4x vs0, 0, r4451; LINUX64BE-NEXT:    li r4, 296452; LINUX64BE-NEXT:    lxvw4x vs0, r3, r4453; LINUX64BE-NEXT:    addi r3, r1, 112454; LINUX64BE-NEXT:    stxvw4x vs0, 0, r3455; LINUX64BE-NEXT:    bl calleeInt456; LINUX64BE-NEXT:    nop457; LINUX64BE-NEXT:    addi r1, r1, 144458; LINUX64BE-NEXT:    ld r0, 16(r1)459; LINUX64BE-NEXT:    mtlr r0460; LINUX64BE-NEXT:    blr461;462; LINUX64LE-LABEL: array1:463; LINUX64LE:       # %bb.0: # %entry464; LINUX64LE-NEXT:    mflr r0465; LINUX64LE-NEXT:    stdu r1, -64(r1)466; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha467; LINUX64LE-NEXT:    li r4, 308468; LINUX64LE-NEXT:    std r0, 80(r1)469; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l470; LINUX64LE-NEXT:    lxvd2x vs0, r3, r4471; LINUX64LE-NEXT:    addi r4, r1, 44472; LINUX64LE-NEXT:    stxvd2x vs0, 0, r4473; LINUX64LE-NEXT:    li r4, 296474; LINUX64LE-NEXT:    lxvd2x vs0, r3, r4475; LINUX64LE-NEXT:    addi r3, r1, 32476; LINUX64LE-NEXT:    stxvd2x vs0, 0, r3477; LINUX64LE-NEXT:    bl calleeInt478; LINUX64LE-NEXT:    nop479; LINUX64LE-NEXT:    addi r1, r1, 64480; LINUX64LE-NEXT:    ld r0, 16(r1)481; LINUX64LE-NEXT:    mtlr r0482; LINUX64LE-NEXT:    blr483entry:484  %IntArray = alloca [7 x i32], align 4485  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %IntArray)486  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %IntArray, ptr noundef nonnull align 4 dereferenceable(28) @__const.mixed2.IntArray, i64 28, i1 false)487  %call = call signext i32 @calleeInt(ptr noundef nonnull %IntArray)488  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %IntArray)489  ret i32 %call490}491 492declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture)493declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)494declare signext i32 @calleeInt(ptr noundef) local_unnamed_addr495declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture)496 497define dso_local double @DValue1() local_unnamed_addr #0 {498; LINUX-LABEL: DValue1:499; LINUX:       # %bb.0: # %entry500; LINUX-NEXT:    addis 3, 2, .LCPI6_0@toc@ha501; LINUX-NEXT:    lfd 1, .LCPI6_0@toc@l(3)502; LINUX-NEXT:    blr503; AIX32-LABEL: DValue1:504; AIX32:       # %bb.0: # %entry505; AIX32-NEXT:    lwz r3, L..C1(r2) # %const.0506; AIX32-NEXT:    lfd f1, 0(r3)507; AIX32-NEXT:    blr508;509; AIX64-LABEL: DValue1:510; AIX64:       # %bb.0: # %entry511; AIX64-NEXT:    ld r3, L..C1(r2) # %const.0512; AIX64-NEXT:    lfd f1, 0(r3)513; AIX64-NEXT:    blr514;515; LINUX64BE-LABEL: DValue1:516; LINUX64BE:       # %bb.0: # %entry517; LINUX64BE-NEXT:    addis r3, r2, .LCPI6_0@toc@ha518; LINUX64BE-NEXT:    lfd f1, .LCPI6_0@toc@l(r3)519; LINUX64BE-NEXT:    blr520;521; LINUX64LE-LABEL: DValue1:522; LINUX64LE:       # %bb.0: # %entry523; LINUX64LE-NEXT:    addis r3, r2, .LCPI6_0@toc@ha524; LINUX64LE-NEXT:    lfd f1, .LCPI6_0@toc@l(r3)525; LINUX64LE-NEXT:    blr526entry:527  ret double 3.141590e+00528}529 530define dso_local signext i32 @str6() local_unnamed_addr #0 {531; AIX32-LABEL: str6:532; AIX32:       # %bb.0: # %entry533; AIX32-NEXT:    mflr r0534; AIX32-NEXT:    stwu r1, -80(r1)535; AIX32-NEXT:    li r3, 17152536; AIX32-NEXT:    stw r0, 88(r1)537; AIX32-NEXT:    stw r31, 76(r1) # 4-byte Folded Spill538; AIX32-NEXT:    sth r3, 72(r1)539; AIX32-NEXT:    lis r3, 16963540; AIX32-NEXT:    ori r3, r3, 16706541; AIX32-NEXT:    stw r3, 68(r1)542; AIX32-NEXT:    lis r3, 16706543; AIX32-NEXT:    ori r3, r3, 17217544; AIX32-NEXT:    stw r3, 64(r1)545; AIX32-NEXT:    addi r3, r1, 64546; AIX32-NEXT:    bl .callee[PR]547; AIX32-NEXT:    nop548; AIX32-NEXT:    mr r31, r3549; AIX32-NEXT:    addi r3, r1, 69550; AIX32-NEXT:    bl .callee[PR]551; AIX32-NEXT:    nop552; AIX32-NEXT:    add r3, r3, r31553; AIX32-NEXT:    lwz r31, 76(r1) # 4-byte Folded Reload554; AIX32-NEXT:    addi r1, r1, 80555; AIX32-NEXT:    lwz r0, 8(r1)556; AIX32-NEXT:    mtlr r0557; AIX32-NEXT:    blr558;559; AIX64-LABEL: str6:560; AIX64:       # %bb.0: # %entry561; AIX64-NEXT:    mflr r0562; AIX64-NEXT:    stdu r1, -144(r1)563; AIX64-NEXT:    li r3, 17152564; AIX64-NEXT:    std r0, 160(r1)565; AIX64-NEXT:    std r31, 136(r1) # 8-byte Folded Spill566; AIX64-NEXT:    sth r3, 128(r1)567; AIX64-NEXT:    lis r3, 16706568; AIX64-NEXT:    ori r3, r3, 17217569; AIX64-NEXT:    rldic r3, r3, 32, 1570; AIX64-NEXT:    oris r3, r3, 16963571; AIX64-NEXT:    ori r3, r3, 16706572; AIX64-NEXT:    std r3, 120(r1)573; AIX64-NEXT:    addi r3, r1, 120574; AIX64-NEXT:    bl .callee[PR]575; AIX64-NEXT:    nop576; AIX64-NEXT:    mr r31, r3577; AIX64-NEXT:    addi r3, r1, 125578; AIX64-NEXT:    bl .callee[PR]579; AIX64-NEXT:    nop580; AIX64-NEXT:    add r3, r3, r31581; AIX64-NEXT:    ld r31, 136(r1) # 8-byte Folded Reload582; AIX64-NEXT:    extsw r3, r3583; AIX64-NEXT:    addi r1, r1, 144584; AIX64-NEXT:    ld r0, 16(r1)585; AIX64-NEXT:    mtlr r0586; AIX64-NEXT:    blr587;588; LINUX64BE-LABEL: str6:589; LINUX64BE:       # %bb.0: # %entry590; LINUX64BE-NEXT:    mflr r0591; LINUX64BE-NEXT:    stdu r1, -144(r1)592; LINUX64BE-NEXT:    li r3, 17152593; LINUX64BE-NEXT:    std r0, 160(r1)594; LINUX64BE-NEXT:    std r30, 128(r1) # 8-byte Folded Spill595; LINUX64BE-NEXT:    sth r3, 120(r1)596; LINUX64BE-NEXT:    lis r3, 16706597; LINUX64BE-NEXT:    ori r3, r3, 17217598; LINUX64BE-NEXT:    rldic r3, r3, 32, 1599; LINUX64BE-NEXT:    oris r3, r3, 16963600; LINUX64BE-NEXT:    ori r3, r3, 16706601; LINUX64BE-NEXT:    std r3, 112(r1)602; LINUX64BE-NEXT:    addi r3, r1, 112603; LINUX64BE-NEXT:    bl callee604; LINUX64BE-NEXT:    nop605; LINUX64BE-NEXT:    mr r30, r3606; LINUX64BE-NEXT:    addi r3, r1, 117607; LINUX64BE-NEXT:    bl callee608; LINUX64BE-NEXT:    nop609; LINUX64BE-NEXT:    add r3, r3, r30610; LINUX64BE-NEXT:    ld r30, 128(r1) # 8-byte Folded Reload611; LINUX64BE-NEXT:    extsw r3, r3612; LINUX64BE-NEXT:    addi r1, r1, 144613; LINUX64BE-NEXT:    ld r0, 16(r1)614; LINUX64BE-NEXT:    mtlr r0615; LINUX64BE-NEXT:    blr616;617; LINUX64LE-LABEL: str6:618; LINUX64LE:       # %bb.0: # %entry619; LINUX64LE-NEXT:    mflr r0620; LINUX64LE-NEXT:    std r30, -16(r1) # 8-byte Folded Spill621; LINUX64LE-NEXT:    stdu r1, -64(r1)622; LINUX64LE-NEXT:    li r3, 67623; LINUX64LE-NEXT:    std r0, 80(r1)624; LINUX64LE-NEXT:    sth r3, 40(r1)625; LINUX64LE-NEXT:    lis r3, 8480626; LINUX64LE-NEXT:    ori r3, r3, 41377627; LINUX64LE-NEXT:    rldic r3, r3, 33, 1628; LINUX64LE-NEXT:    oris r3, r3, 16707629; LINUX64LE-NEXT:    ori r3, r3, 16961630; LINUX64LE-NEXT:    std r3, 32(r1)631; LINUX64LE-NEXT:    addi r3, r1, 32632; LINUX64LE-NEXT:    bl callee633; LINUX64LE-NEXT:    nop634; LINUX64LE-NEXT:    mr r30, r3635; LINUX64LE-NEXT:    addi r3, r1, 37636; LINUX64LE-NEXT:    bl callee637; LINUX64LE-NEXT:    nop638; LINUX64LE-NEXT:    add r3, r3, r30639; LINUX64LE-NEXT:    extsw r3, r3640; LINUX64LE-NEXT:    addi r1, r1, 64641; LINUX64LE-NEXT:    ld r0, 16(r1)642; LINUX64LE-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload643; LINUX64LE-NEXT:    mtlr r0644; LINUX64LE-NEXT:    blr645entry:646  %TheString = alloca [10 x i8], align 1647  call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %TheString)648  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %TheString, ptr noundef nonnull align 1 dereferenceable(10) @__const.str6.TheString, i64 10, i1 false)649  %call = call signext i32 @callee(ptr noundef nonnull %TheString)650  %add.ptr = getelementptr inbounds i8, ptr %TheString, i64 5651  %call2 = call signext i32 @callee(ptr noundef nonnull %add.ptr)652  %add = add nsw i32 %call2, %call653  call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %TheString)654  ret i32 %add655}656 657define dso_local signext i32 @str7() local_unnamed_addr #0 {658; AIX32-LABEL: str7:659; AIX32:       # %bb.0: # %entry660; AIX32-NEXT:    mflr r0661; AIX32-NEXT:    stwu r1, -64(r1)662; AIX32-NEXT:    lwz r3, L..C2(r2) # @GLOBALSTRING663; AIX32-NEXT:    stw r0, 72(r1)664; AIX32-NEXT:    stw r31, 60(r1) # 4-byte Folded Spill665; AIX32-NEXT:    lwz r3, 0(r3)666; AIX32-NEXT:    bl .callee[PR]667; AIX32-NEXT:    nop668; AIX32-NEXT:    mr r31, r3669; AIX32-NEXT:    lwz r3, L..C0(r2) # @_MergedGlobals670; AIX32-NEXT:    addi r3, r3, 80671; AIX32-NEXT:    bl .callee[PR]672; AIX32-NEXT:    nop673; AIX32-NEXT:    add r3, r3, r31674; AIX32-NEXT:    lwz r31, 60(r1) # 4-byte Folded Reload675; AIX32-NEXT:    addi r1, r1, 64676; AIX32-NEXT:    lwz r0, 8(r1)677; AIX32-NEXT:    mtlr r0678; AIX32-NEXT:    blr679;680; AIX64-LABEL: str7:681; AIX64:       # %bb.0: # %entry682; AIX64-NEXT:    mflr r0683; AIX64-NEXT:    stdu r1, -128(r1)684; AIX64-NEXT:    ld r3, L..C2(r2) # @GLOBALSTRING685; AIX64-NEXT:    std r0, 144(r1)686; AIX64-NEXT:    std r31, 120(r1) # 8-byte Folded Spill687; AIX64-NEXT:    ld r3, 0(r3)688; AIX64-NEXT:    bl .callee[PR]689; AIX64-NEXT:    nop690; AIX64-NEXT:    mr r31, r3691; AIX64-NEXT:    ld r3, L..C0(r2) # @_MergedGlobals692; AIX64-NEXT:    addi r3, r3, 80693; AIX64-NEXT:    bl .callee[PR]694; AIX64-NEXT:    nop695; AIX64-NEXT:    add r3, r3, r31696; AIX64-NEXT:    ld r31, 120(r1) # 8-byte Folded Reload697; AIX64-NEXT:    extsw r3, r3698; AIX64-NEXT:    addi r1, r1, 128699; AIX64-NEXT:    ld r0, 16(r1)700; AIX64-NEXT:    mtlr r0701; AIX64-NEXT:    blr702;703; LINUX64BE-LABEL: str7:704; LINUX64BE:       # %bb.0: # %entry705; LINUX64BE-NEXT:    mflr r0706; LINUX64BE-NEXT:    stdu r1, -128(r1)707; LINUX64BE-NEXT:    std r0, 144(r1)708; LINUX64BE-NEXT:    addis r3, r2, GLOBALSTRING@toc@ha709; LINUX64BE-NEXT:    ld r3, GLOBALSTRING@toc@l(r3)710; LINUX64BE-NEXT:    std r30, 112(r1) # 8-byte Folded Spill711; LINUX64BE-NEXT:    bl callee712; LINUX64BE-NEXT:    nop713; LINUX64BE-NEXT:    mr r30, r3714; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha715; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l716; LINUX64BE-NEXT:    addi r3, r3, 80717; LINUX64BE-NEXT:    bl callee718; LINUX64BE-NEXT:    nop719; LINUX64BE-NEXT:    add r3, r3, r30720; LINUX64BE-NEXT:    ld r30, 112(r1) # 8-byte Folded Reload721; LINUX64BE-NEXT:    extsw r3, r3722; LINUX64BE-NEXT:    addi r1, r1, 128723; LINUX64BE-NEXT:    ld r0, 16(r1)724; LINUX64BE-NEXT:    mtlr r0725; LINUX64BE-NEXT:    blr726;727; LINUX64LE-LABEL: str7:728; LINUX64LE:       # %bb.0: # %entry729; LINUX64LE-NEXT:    mflr r0730; LINUX64LE-NEXT:    std r30, -16(r1) # 8-byte Folded Spill731; LINUX64LE-NEXT:    stdu r1, -48(r1)732; LINUX64LE-NEXT:    std r0, 64(r1)733; LINUX64LE-NEXT:    addis r3, r2, GLOBALSTRING@toc@ha734; LINUX64LE-NEXT:    ld r3, GLOBALSTRING@toc@l(r3)735; LINUX64LE-NEXT:    bl callee736; LINUX64LE-NEXT:    nop737; LINUX64LE-NEXT:    mr r30, r3738; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha739; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l740; LINUX64LE-NEXT:    addi r3, r3, 80741; LINUX64LE-NEXT:    bl callee742; LINUX64LE-NEXT:    nop743; LINUX64LE-NEXT:    add r3, r3, r30744; LINUX64LE-NEXT:    extsw r3, r3745; LINUX64LE-NEXT:    addi r1, r1, 48746; LINUX64LE-NEXT:    ld r0, 16(r1)747; LINUX64LE-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload748; LINUX64LE-NEXT:    mtlr r0749; LINUX64LE-NEXT:    blr750entry:751  %0 = load ptr, ptr @GLOBALSTRING, align 8752  %call = tail call signext i32 @callee(ptr noundef %0)753  %call1 = tail call signext i32 @callee(ptr noundef nonnull @.str.8)754  %add = add nsw i32 %call1, %call755  ret i32 %add756}757 758define dso_local signext i32 @mixed1() local_unnamed_addr #0 {759; AIX32-LABEL: mixed1:760; AIX32:       # %bb.0: # %entry761; AIX32-NEXT:    mflr r0762; AIX32-NEXT:    stwu r1, -64(r1)763; AIX32-NEXT:    lwz r3, L..C3(r2) # @IntArray2764; AIX32-NEXT:    stw r0, 72(r1)765; AIX32-NEXT:    stw r31, 60(r1) # 4-byte Folded Spill766; AIX32-NEXT:    bl .calleeInt[PR]767; AIX32-NEXT:    nop768; AIX32-NEXT:    mr r31, r3769; AIX32-NEXT:    lwz r3, L..C0(r2) # @_MergedGlobals770; AIX32-NEXT:    addi r3, r3, 68771; AIX32-NEXT:    bl .callee[PR]772; AIX32-NEXT:    nop773; AIX32-NEXT:    add r3, r3, r31774; AIX32-NEXT:    lwz r31, 60(r1) # 4-byte Folded Reload775; AIX32-NEXT:    addi r1, r1, 64776; AIX32-NEXT:    lwz r0, 8(r1)777; AIX32-NEXT:    mtlr r0778; AIX32-NEXT:    blr779;780; AIX64-LABEL: mixed1:781; AIX64:       # %bb.0: # %entry782; AIX64-NEXT:    mflr r0783; AIX64-NEXT:    stdu r1, -128(r1)784; AIX64-NEXT:    ld r3, L..C3(r2) # @IntArray2785; AIX64-NEXT:    std r0, 144(r1)786; AIX64-NEXT:    std r31, 120(r1) # 8-byte Folded Spill787; AIX64-NEXT:    bl .calleeInt[PR]788; AIX64-NEXT:    nop789; AIX64-NEXT:    mr r31, r3790; AIX64-NEXT:    ld r3, L..C0(r2) # @_MergedGlobals791; AIX64-NEXT:    addi r3, r3, 68792; AIX64-NEXT:    bl .callee[PR]793; AIX64-NEXT:    nop794; AIX64-NEXT:    add r3, r3, r31795; AIX64-NEXT:    ld r31, 120(r1) # 8-byte Folded Reload796; AIX64-NEXT:    extsw r3, r3797; AIX64-NEXT:    addi r1, r1, 128798; AIX64-NEXT:    ld r0, 16(r1)799; AIX64-NEXT:    mtlr r0800; AIX64-NEXT:    blr801;802; LINUX64BE-LABEL: mixed1:803; LINUX64BE:       # %bb.0: # %entry804; LINUX64BE-NEXT:    mflr r0805; LINUX64BE-NEXT:    stdu r1, -128(r1)806; LINUX64BE-NEXT:    addis r3, r2, IntArray2@toc@ha807; LINUX64BE-NEXT:    std r0, 144(r1)808; LINUX64BE-NEXT:    std r30, 112(r1) # 8-byte Folded Spill809; LINUX64BE-NEXT:    addi r3, r3, IntArray2@toc@l810; LINUX64BE-NEXT:    bl calleeInt811; LINUX64BE-NEXT:    nop812; LINUX64BE-NEXT:    mr r30, r3813; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha814; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l815; LINUX64BE-NEXT:    addi r3, r3, 68816; LINUX64BE-NEXT:    bl callee817; LINUX64BE-NEXT:    nop818; LINUX64BE-NEXT:    add r3, r3, r30819; LINUX64BE-NEXT:    ld r30, 112(r1) # 8-byte Folded Reload820; LINUX64BE-NEXT:    extsw r3, r3821; LINUX64BE-NEXT:    addi r1, r1, 128822; LINUX64BE-NEXT:    ld r0, 16(r1)823; LINUX64BE-NEXT:    mtlr r0824; LINUX64BE-NEXT:    blr825;826; LINUX64LE-LABEL: mixed1:827; LINUX64LE:       # %bb.0: # %entry828; LINUX64LE-NEXT:    mflr r0829; LINUX64LE-NEXT:    std r30, -16(r1) # 8-byte Folded Spill830; LINUX64LE-NEXT:    stdu r1, -48(r1)831; LINUX64LE-NEXT:    addis r3, r2, IntArray2@toc@ha832; LINUX64LE-NEXT:    std r0, 64(r1)833; LINUX64LE-NEXT:    addi r3, r3, IntArray2@toc@l834; LINUX64LE-NEXT:    bl calleeInt835; LINUX64LE-NEXT:    nop836; LINUX64LE-NEXT:    mr r30, r3837; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha838; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l839; LINUX64LE-NEXT:    addi r3, r3, 68840; LINUX64LE-NEXT:    bl callee841; LINUX64LE-NEXT:    nop842; LINUX64LE-NEXT:    add r3, r3, r30843; LINUX64LE-NEXT:    extsw r3, r3844; LINUX64LE-NEXT:    addi r1, r1, 48845; LINUX64LE-NEXT:    ld r0, 16(r1)846; LINUX64LE-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload847; LINUX64LE-NEXT:    mtlr r0848; LINUX64LE-NEXT:    blr849entry:850  %call = tail call signext i32 @calleeInt(ptr noundef nonnull @IntArray2)851  %call1 = tail call signext i32 @callee(ptr noundef nonnull @.str.6)852  %add = add nsw i32 %call1, %call853  ret i32 %add854}855 856define dso_local signext i32 @mixed2() local_unnamed_addr #0 {857; AIX32-LABEL: mixed2:858; AIX32:       # %bb.0: # %entry859; AIX32-NEXT:    mflr r0860; AIX32-NEXT:    stwu r1, -112(r1)861; AIX32-NEXT:    stw r0, 120(r1)862; AIX32-NEXT:    stw r30, 104(r1) # 4-byte Folded Spill863; AIX32-NEXT:    lwz r30, L..C0(r2) # @_MergedGlobals864; AIX32-NEXT:    li r5, 308865; AIX32-NEXT:    li r4, 12866; AIX32-NEXT:    addi r3, r1, 64867; AIX32-NEXT:    stw r31, 108(r1) # 4-byte Folded Spill868; AIX32-NEXT:    rlwimi r4, r3, 0, 30, 27869; AIX32-NEXT:    lxvw4x vs0, r30, r5870; AIX32-NEXT:    stxvw4x vs0, 0, r4871; AIX32-NEXT:    li r4, 296872; AIX32-NEXT:    lxvw4x vs0, r30, r4873; AIX32-NEXT:    stxvw4x vs0, 0, r3874; AIX32-NEXT:    bl .calleeInt[PR]875; AIX32-NEXT:    nop876; AIX32-NEXT:    mr r31, r3877; AIX32-NEXT:    lwz r3, L..C3(r2) # @IntArray2878; AIX32-NEXT:    bl .calleeInt[PR]879; AIX32-NEXT:    nop880; AIX32-NEXT:    add r31, r3, r31881; AIX32-NEXT:    addi r3, r30, 68882; AIX32-NEXT:    bl .callee[PR]883; AIX32-NEXT:    nop884; AIX32-NEXT:    add r31, r31, r3885; AIX32-NEXT:    addi r3, r30, 273886; AIX32-NEXT:    bl .callee[PR]887; AIX32-NEXT:    nop888; AIX32-NEXT:    add r3, r31, r3889; AIX32-NEXT:    lwz r31, 108(r1) # 4-byte Folded Reload890; AIX32-NEXT:    lwz r30, 104(r1) # 4-byte Folded Reload891; AIX32-NEXT:    addi r1, r1, 112892; AIX32-NEXT:    lwz r0, 8(r1)893; AIX32-NEXT:    mtlr r0894; AIX32-NEXT:    blr895;896; AIX64-LABEL: mixed2:897; AIX64:       # %bb.0: # %entry898; AIX64-NEXT:    mflr r0899; AIX64-NEXT:    stdu r1, -160(r1)900; AIX64-NEXT:    std r0, 176(r1)901; AIX64-NEXT:    std r30, 144(r1) # 8-byte Folded Spill902; AIX64-NEXT:    ld r30, L..C0(r2) # @_MergedGlobals903; AIX64-NEXT:    li r3, 308904; AIX64-NEXT:    std r31, 152(r1) # 8-byte Folded Spill905; AIX64-NEXT:    lxvw4x vs0, r30, r3906; AIX64-NEXT:    addi r3, r1, 124907; AIX64-NEXT:    stxvw4x vs0, 0, r3908; AIX64-NEXT:    li r3, 296909; AIX64-NEXT:    lxvw4x vs0, r30, r3910; AIX64-NEXT:    addi r3, r1, 112911; AIX64-NEXT:    stxvw4x vs0, 0, r3912; AIX64-NEXT:    bl .calleeInt[PR]913; AIX64-NEXT:    nop914; AIX64-NEXT:    mr r31, r3915; AIX64-NEXT:    ld r3, L..C3(r2) # @IntArray2916; AIX64-NEXT:    bl .calleeInt[PR]917; AIX64-NEXT:    nop918; AIX64-NEXT:    add r31, r3, r31919; AIX64-NEXT:    addi r3, r30, 68920; AIX64-NEXT:    bl .callee[PR]921; AIX64-NEXT:    nop922; AIX64-NEXT:    add r31, r31, r3923; AIX64-NEXT:    addi r3, r30, 273924; AIX64-NEXT:    bl .callee[PR]925; AIX64-NEXT:    nop926; AIX64-NEXT:    add r3, r31, r3927; AIX64-NEXT:    ld r31, 152(r1) # 8-byte Folded Reload928; AIX64-NEXT:    ld r30, 144(r1) # 8-byte Folded Reload929; AIX64-NEXT:    extsw r3, r3930; AIX64-NEXT:    addi r1, r1, 160931; AIX64-NEXT:    ld r0, 16(r1)932; AIX64-NEXT:    mtlr r0933; AIX64-NEXT:    blr934;935; LINUX64BE-LABEL: mixed2:936; LINUX64BE:       # %bb.0: # %entry937; LINUX64BE-NEXT:    mflr r0938; LINUX64BE-NEXT:    stdu r1, -176(r1)939; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha940; LINUX64BE-NEXT:    std r0, 192(r1)941; LINUX64BE-NEXT:    std r29, 152(r1) # 8-byte Folded Spill942; LINUX64BE-NEXT:    li r4, 308943; LINUX64BE-NEXT:    std r30, 160(r1) # 8-byte Folded Spill944; LINUX64BE-NEXT:    addi r29, r3, .L_MergedGlobals@toc@l945; LINUX64BE-NEXT:    addi r3, r1, 124946; LINUX64BE-NEXT:    lxvw4x vs0, r29, r4947; LINUX64BE-NEXT:    stxvw4x vs0, 0, r3948; LINUX64BE-NEXT:    li r3, 296949; LINUX64BE-NEXT:    lxvw4x vs0, r29, r3950; LINUX64BE-NEXT:    addi r3, r1, 112951; LINUX64BE-NEXT:    stxvw4x vs0, 0, r3952; LINUX64BE-NEXT:    bl calleeInt953; LINUX64BE-NEXT:    nop954; LINUX64BE-NEXT:    mr r30, r3955; LINUX64BE-NEXT:    addis r3, r2, IntArray2@toc@ha956; LINUX64BE-NEXT:    addi r3, r3, IntArray2@toc@l957; LINUX64BE-NEXT:    bl calleeInt958; LINUX64BE-NEXT:    nop959; LINUX64BE-NEXT:    add r30, r3, r30960; LINUX64BE-NEXT:    addi r3, r29, 68961; LINUX64BE-NEXT:    bl callee962; LINUX64BE-NEXT:    nop963; LINUX64BE-NEXT:    add r30, r30, r3964; LINUX64BE-NEXT:    addi r3, r29, 273965; LINUX64BE-NEXT:    bl callee966; LINUX64BE-NEXT:    nop967; LINUX64BE-NEXT:    add r3, r30, r3968; LINUX64BE-NEXT:    ld r30, 160(r1) # 8-byte Folded Reload969; LINUX64BE-NEXT:    ld r29, 152(r1) # 8-byte Folded Reload970; LINUX64BE-NEXT:    extsw r3, r3971; LINUX64BE-NEXT:    addi r1, r1, 176972; LINUX64BE-NEXT:    ld r0, 16(r1)973; LINUX64BE-NEXT:    mtlr r0974; LINUX64BE-NEXT:    blr975;976; LINUX64LE-LABEL: mixed2:977; LINUX64LE:       # %bb.0: # %entry978; LINUX64LE-NEXT:    mflr r0979; LINUX64LE-NEXT:    std r29, -24(r1) # 8-byte Folded Spill980; LINUX64LE-NEXT:    std r30, -16(r1) # 8-byte Folded Spill981; LINUX64LE-NEXT:    stdu r1, -96(r1)982; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha983; LINUX64LE-NEXT:    li r4, 308984; LINUX64LE-NEXT:    std r0, 112(r1)985; LINUX64LE-NEXT:    addi r29, r3, .L_MergedGlobals@toc@l986; LINUX64LE-NEXT:    addi r3, r1, 44987; LINUX64LE-NEXT:    lxvd2x vs0, r29, r4988; LINUX64LE-NEXT:    stxvd2x vs0, 0, r3989; LINUX64LE-NEXT:    li r3, 296990; LINUX64LE-NEXT:    lxvd2x vs0, r29, r3991; LINUX64LE-NEXT:    addi r3, r1, 32992; LINUX64LE-NEXT:    stxvd2x vs0, 0, r3993; LINUX64LE-NEXT:    bl calleeInt994; LINUX64LE-NEXT:    nop995; LINUX64LE-NEXT:    mr r30, r3996; LINUX64LE-NEXT:    addis r3, r2, IntArray2@toc@ha997; LINUX64LE-NEXT:    addi r3, r3, IntArray2@toc@l998; LINUX64LE-NEXT:    bl calleeInt999; LINUX64LE-NEXT:    nop1000; LINUX64LE-NEXT:    add r30, r3, r301001; LINUX64LE-NEXT:    addi r3, r29, 681002; LINUX64LE-NEXT:    bl callee1003; LINUX64LE-NEXT:    nop1004; LINUX64LE-NEXT:    add r30, r30, r31005; LINUX64LE-NEXT:    addi r3, r29, 2731006; LINUX64LE-NEXT:    bl callee1007; LINUX64LE-NEXT:    nop1008; LINUX64LE-NEXT:    add r3, r30, r31009; LINUX64LE-NEXT:    extsw r3, r31010; LINUX64LE-NEXT:    addi r1, r1, 961011; LINUX64LE-NEXT:    ld r0, 16(r1)1012; LINUX64LE-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1013; LINUX64LE-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload1014; LINUX64LE-NEXT:    mtlr r01015; LINUX64LE-NEXT:    blr1016entry:1017  %IntArray = alloca [7 x i32], align 41018  call void @llvm.lifetime.start.p0(i64 28, ptr nonnull %IntArray)1019  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %IntArray, ptr noundef nonnull align 4 dereferenceable(28) @__const.mixed2.IntArray, i64 28, i1 false)1020  %call = call signext i32 @calleeInt(ptr noundef nonnull %IntArray)1021  %call1 = call signext i32 @calleeInt(ptr noundef nonnull @IntArray2)1022  %add = add nsw i32 %call1, %call1023  %call2 = call signext i32 @callee(ptr noundef nonnull @.str.6)1024  %add3 = add nsw i32 %add, %call21025  %call4 = call signext i32 @callee(ptr noundef nonnull @.str.7)1026  %add5 = add nsw i32 %add3, %call41027  call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %IntArray)1028  ret i32 %add51029}1030 1031define dso_local signext i32 @str9() local_unnamed_addr #0 {1032; AIX32-LABEL: str9:1033; AIX32:       # %bb.0: # %entry1034; AIX32-NEXT:    mflr r01035; AIX32-NEXT:    stwu r1, -64(r1)1036; AIX32-NEXT:    lwz r3, L..C0(r2) # @_MergedGlobals1037; AIX32-NEXT:    stw r0, 72(r1)1038; AIX32-NEXT:    addi r3, r3, 1281039; AIX32-NEXT:    bl .callee[PR]1040; AIX32-NEXT:    nop1041; AIX32-NEXT:    addi r1, r1, 641042; AIX32-NEXT:    lwz r0, 8(r1)1043; AIX32-NEXT:    mtlr r01044; AIX32-NEXT:    blr1045;1046; AIX64-LABEL: str9:1047; AIX64:       # %bb.0: # %entry1048; AIX64-NEXT:    mflr r01049; AIX64-NEXT:    stdu r1, -112(r1)1050; AIX64-NEXT:    ld r3, L..C0(r2) # @_MergedGlobals1051; AIX64-NEXT:    std r0, 128(r1)1052; AIX64-NEXT:    addi r3, r3, 1281053; AIX64-NEXT:    bl .callee[PR]1054; AIX64-NEXT:    nop1055; AIX64-NEXT:    addi r1, r1, 1121056; AIX64-NEXT:    ld r0, 16(r1)1057; AIX64-NEXT:    mtlr r01058; AIX64-NEXT:    blr1059;1060; LINUX64BE-LABEL: str9:1061; LINUX64BE:       # %bb.0: # %entry1062; LINUX64BE-NEXT:    mflr r01063; LINUX64BE-NEXT:    stdu r1, -112(r1)1064; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha1065; LINUX64BE-NEXT:    std r0, 128(r1)1066; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l1067; LINUX64BE-NEXT:    addi r3, r3, 1281068; LINUX64BE-NEXT:    bl callee1069; LINUX64BE-NEXT:    nop1070; LINUX64BE-NEXT:    addi r1, r1, 1121071; LINUX64BE-NEXT:    ld r0, 16(r1)1072; LINUX64BE-NEXT:    mtlr r01073; LINUX64BE-NEXT:    blr1074;1075; LINUX64LE-LABEL: str9:1076; LINUX64LE:       # %bb.0: # %entry1077; LINUX64LE-NEXT:    mflr r01078; LINUX64LE-NEXT:    stdu r1, -32(r1)1079; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha1080; LINUX64LE-NEXT:    std r0, 48(r1)1081; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l1082; LINUX64LE-NEXT:    addi r3, r3, 1281083; LINUX64LE-NEXT:    bl callee1084; LINUX64LE-NEXT:    nop1085; LINUX64LE-NEXT:    addi r1, r1, 321086; LINUX64LE-NEXT:    ld r0, 16(r1)1087; LINUX64LE-NEXT:    mtlr r01088; LINUX64LE-NEXT:    blr1089entry:1090  %call = tail call signext i32 @callee(ptr noundef nonnull @.str.9)1091  ret i32 %call1092}1093 1094define dso_local signext i32 @str10() local_unnamed_addr #0 {1095; AIX32-LABEL: str10:1096; AIX32:       # %bb.0: # %entry1097; AIX32-NEXT:    mflr r01098; AIX32-NEXT:    stwu r1, -64(r1)1099; AIX32-NEXT:    lwz r3, L..C0(r2) # @_MergedGlobals1100; AIX32-NEXT:    stw r0, 72(r1)1101; AIX32-NEXT:    addi r3, r3, 2561102; AIX32-NEXT:    bl .callee[PR]1103; AIX32-NEXT:    nop1104; AIX32-NEXT:    addi r1, r1, 641105; AIX32-NEXT:    lwz r0, 8(r1)1106; AIX32-NEXT:    mtlr r01107; AIX32-NEXT:    blr1108;1109; AIX64-LABEL: str10:1110; AIX64:       # %bb.0: # %entry1111; AIX64-NEXT:    mflr r01112; AIX64-NEXT:    stdu r1, -112(r1)1113; AIX64-NEXT:    ld r3, L..C0(r2) # @_MergedGlobals1114; AIX64-NEXT:    std r0, 128(r1)1115; AIX64-NEXT:    addi r3, r3, 2561116; AIX64-NEXT:    bl .callee[PR]1117; AIX64-NEXT:    nop1118; AIX64-NEXT:    addi r1, r1, 1121119; AIX64-NEXT:    ld r0, 16(r1)1120; AIX64-NEXT:    mtlr r01121; AIX64-NEXT:    blr1122;1123; LINUX64BE-LABEL: str10:1124; LINUX64BE:       # %bb.0: # %entry1125; LINUX64BE-NEXT:    mflr r01126; LINUX64BE-NEXT:    stdu r1, -112(r1)1127; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha1128; LINUX64BE-NEXT:    std r0, 128(r1)1129; LINUX64BE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l1130; LINUX64BE-NEXT:    addi r3, r3, 2561131; LINUX64BE-NEXT:    bl callee1132; LINUX64BE-NEXT:    nop1133; LINUX64BE-NEXT:    addi r1, r1, 1121134; LINUX64BE-NEXT:    ld r0, 16(r1)1135; LINUX64BE-NEXT:    mtlr r01136; LINUX64BE-NEXT:    blr1137;1138; LINUX64LE-LABEL: str10:1139; LINUX64LE:       # %bb.0: # %entry1140; LINUX64LE-NEXT:    mflr r01141; LINUX64LE-NEXT:    stdu r1, -32(r1)1142; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha1143; LINUX64LE-NEXT:    std r0, 48(r1)1144; LINUX64LE-NEXT:    addi r3, r3, .L_MergedGlobals@toc@l1145; LINUX64LE-NEXT:    addi r3, r3, 2561146; LINUX64LE-NEXT:    bl callee1147; LINUX64LE-NEXT:    nop1148; LINUX64LE-NEXT:    addi r1, r1, 321149; LINUX64LE-NEXT:    ld r0, 16(r1)1150; LINUX64LE-NEXT:    mtlr r01151; LINUX64LE-NEXT:    blr1152entry:1153  %call = tail call signext i32 @callee(ptr noundef nonnull @.str.10)1154  ret i32 %call1155}1156 1157attributes #0 = { nounwind }1158 1159; AIXDATA: .csect L.._MergedGlobals[RO],71160; AIXDATA:       .align  7                               # @_MergedGlobals1161; AIXDATA:       .string "ABCABCABC"1162; AIXDATA:       .string "str1_STRING"1163; AIXDATA:       .string "str2_STRING"1164; AIXDATA:       .string "str3_STRING"1165; AIXDATA:       .string "str4_STRING"1166; AIXDATA:       .string "MixedString"1167; AIXDATA:       .byte   'S,'t,'a,'t,'i,'c,' ,'G,'l,'o,'b,'a,'l,0012,00001168; AIXDATA:       .string "str9_STRING....."1169; AIXDATA:       .string "str10_STRING...."1170; AIXDATA:       .string "Different String 01"1171; AIXDATA:       .vbyte  4, 5                            # 0x51172; AIXDATA:       .vbyte  4, 7                            # 0x71173; AIXDATA:       .vbyte  4, 9                            # 0x91174; AIXDATA:       .vbyte  4, 11                           # 0xb1175; AIXDATA:       .vbyte  4, 17                           # 0x111176; AIXDATA:       .vbyte  4, 1235                         # 0x4d31177; AIXDATA:       .vbyte  4, 32                           # 0x201178; AIXDATA:       .string "longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_STRING"1179 1180; LINUXDATA: .L_MergedGlobals:1181; LINUXDATA:    .asciz  "ABCABCABC"1182; LINUXDATA:    .asciz  "str1_STRING"1183; LINUXDATA:    .asciz  "str2_STRING"1184; LINUXDATA:    .asciz  "str3_STRING"1185; LINUXDATA:    .asciz  "str4_STRING"1186; LINUXDATA:    .asciz  "MixedString"1187; LINUXDATA:    .asciz  "Static Global\n"1188; LINUXDATA:    .asciz  "str9_STRING....."1189; LINUXDATA:    .asciz  "str10_STRING...."1190; LINUXDATA:    .asciz  "Different String 01"1191; LINUXDATA:    .long   5                               # 0x51192; LINUXDATA:    .long   7                               # 0x71193; LINUXDATA:    .long   9                               # 0x91194; LINUXDATA:    .long   11                              # 0xb1195; LINUXDATA:    .long   17                              # 0x111196; LINUXDATA:    .long   1235                            # 0x4d31197; LINUXDATA:    .long   32                              # 0x201198; LINUXDATA:    .asciz  "This is the global string that is at the top.\n"1199; LINUXDATA:    .asciz  "longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_longerstr5_STRING"1200