brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.6 KiB · fdd7c75 Raw
400 lines · plain
1; This file tests TOC entry generation and undefined symbol generation.2 3; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \4; RUN:     -xcoff-traceback-table=false < %s | FileCheck --check-prefixes CHECK,CHECK32 %s5; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \6; RUN:     -xcoff-traceback-table=false < %s 2>&1 | FileCheck --check-prefixes CHECK,CHECK64  %s7 8; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \9; RUN:     --xcoff-traceback-table=false -filetype=obj -o %t.o < %s10; RUN: llvm-readobj --syms %t.o | FileCheck --check-prefixes=SYM,SYM32 %s11 12; RUN: llc -verify-machineinstrs -mcpu=pwr4 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \13; RUN:     --xcoff-traceback-table=false -filetype=obj -o %t64.o < %s14; RUN: llvm-readobj --syms %t64.o | FileCheck --check-prefixes=SYM,SYM64 %s15 16@a = external global i32, align 417@b = external global i64, align 818@c = external global i16, align 219@globa = common global i32 0, align 420 21@ptr = internal global ptr null, align 422 23declare void @foo()24 25define void @bar() {26  %1 = alloca ptr, align 827  %2 = alloca ptr, align 828  store i32 0, ptr @a, align 429  store i64 0, ptr @b, align 830  store i16 0, ptr @c, align 231  store i32 0, ptr @globa, align 432  store ptr @bar, ptr @ptr, align 433  store ptr @foo, ptr %1, align 834  store ptr @foobar, ptr %2, align 835  ret void36}37 38; We initialize a csect when we first reference an external global, so make sure we don't run into problems when we see it again.39define void @bar2() {40  store i32 0, ptr @a, align 441  store i64 0, ptr @b, align 842  store i16 0, ptr @c, align 243  ret void44}45 46define void @foobar() {47  ret void48}49 50; Test tc entry assembly generation.51 52; CHECK-NOT: .comm a53; CHECK-NOT: .lcomm a54; CHECK-NOT: .comm b55; CHECK-NOT: .lcomm b56; CHECK-NOT: .comm c57; CHECK-NOT: .lcomm c58; CHECK: .comm globa[RW],4,259; CHECK32: .lcomm ptr,4,ptr[BS],260; CHECK64: .lcomm ptr,8,ptr[BS],261; CHECK:      .toc62; CHECK-NEXT: L..C0:63; CHECK-NEXT: .tc   a[TC],a[UA]64; CHECK-NEXT: L..C1:65; CHECK-NEXT: .tc   b[TC],b[UA]66; CHECK-NEXT: L..C2:67; CHECK-NEXT: .tc   c[TC],c[UA]68; CHECK-NEXT: L..C3:69; CHECK-NEXT: .tc   globa[TC],globa[RW]70; CHECK-NEXT: L..C4:71; CHECK-NEXT: .tc   ptr[TC],ptr[BS]72; CHECK-NEXT: L..C5:73; CHECK-NEXT: .tc   bar[TC],bar[DS]74; CHECK-NEXT: L..C6:75; CHECK-NEXT: .tc   foo[TC],foo[DS]76; CHECK-NEXT: L..C7:77; CHECK-NEXT: .tc   foobar[TC],foobar[DS]78 79 80; Test undefined symbol generation.81 82; SYM:       Symbol {{[{][[:space:]] *}}Index: [[#UNDEF_INDX:]]{{[[:space:]] *}}Name: a83; SYM-NEXT:   Value (RelocatableAddress): 0x084; SYM-NEXT:   Section: N_UNDEF85; SYM-NEXT:   Type: 0x086; SYM-NEXT:   StorageClass: C_EXT (0x2)87; SYM-NEXT:   NumberOfAuxEntries: 188; SYM-NEXT:   CSECT Auxiliary Entry {89; SYM-NEXT:     Index: [[#UNDEF_INDX+1]]90; SYM-NEXT:     SectionLen: 091; SYM-NEXT:     ParameterHashIndex: 0x092; SYM-NEXT:     TypeChkSectNum: 0x093; SYM-NEXT:     SymbolAlignmentLog2: 094; SYM-NEXT:     SymbolType: XTY_ER (0x0)95; SYM-NEXT:     StorageMappingClass: XMC_UA (0x4)96; SYM32-NEXT:   StabInfoIndex: 0x097; SYM32-NEXT:   StabSectNum: 0x098; SYM64-NEXT:   Auxiliary Type: AUX_CSECT (0xFB)99; SYM-NEXT:   }100; SYM-NEXT: }101; SYM-NEXT: Symbol {102; SYM-NEXT:   Index: [[#UNDEF_INDX+2]]103; SYM-NEXT:   Name: b104; SYM-NEXT:   Value (RelocatableAddress): 0x0105; SYM-NEXT:   Section: N_UNDEF106; SYM-NEXT:   Type: 0x0107; SYM-NEXT:   StorageClass: C_EXT (0x2)108; SYM-NEXT:   NumberOfAuxEntries: 1109; SYM-NEXT:   CSECT Auxiliary Entry {110; SYM-NEXT:     Index: [[#UNDEF_INDX+3]]111; SYM-NEXT:     SectionLen: 0112; SYM-NEXT:     ParameterHashIndex: 0x0113; SYM-NEXT:     TypeChkSectNum: 0x0114; SYM-NEXT:     SymbolAlignmentLog2: 0115; SYM-NEXT:     SymbolType: XTY_ER (0x0)116; SYM-NEXT:     StorageMappingClass: XMC_UA (0x4)117; SYM32-NEXT:   StabInfoIndex: 0x0118; SYM32-NEXT:   StabSectNum: 0x0119; SYM64-NEXT:   Auxiliary Type: AUX_CSECT (0xFB)120; SYM-NEXT:   }121; SYM-NEXT: }122; SYM-NEXT: Symbol {123; SYM-NEXT:   Index: [[#UNDEF_INDX+4]]124; SYM-NEXT:   Name: c125; SYM-NEXT:   Value (RelocatableAddress): 0x0126; SYM-NEXT:   Section: N_UNDEF127; SYM-NEXT:   Type: 0x0128; SYM-NEXT:   StorageClass: C_EXT (0x2)129; SYM-NEXT:   NumberOfAuxEntries: 1130; SYM-NEXT:   CSECT Auxiliary Entry {131; SYM-NEXT:     Index: [[#UNDEF_INDX+5]]132; SYM-NEXT:     SectionLen: 0133; SYM-NEXT:     ParameterHashIndex: 0x0134; SYM-NEXT:     TypeChkSectNum: 0x0135; SYM-NEXT:     SymbolAlignmentLog2: 0136; SYM-NEXT:     SymbolType: XTY_ER (0x0)137; SYM-NEXT:     StorageMappingClass: XMC_UA (0x4)138; SYM32-NEXT:   StabInfoIndex: 0x0139; SYM32-NEXT:   StabSectNum: 0x0140; SYM64-NEXT:   Auxiliary Type: AUX_CSECT (0xFB)141; SYM-NEXT:   }142; SYM-NEXT: }143; SYM-NEXT: Symbol {144; SYM-NEXT:   Index: [[#UNDEF_INDX+6]]145; SYM-NEXT:   Name: .foo146; SYM-NEXT:   Value (RelocatableAddress): 0x0147; SYM-NEXT:   Section: N_UNDEF148; SYM-NEXT:   Type: 0x0149; SYM-NEXT:   StorageClass: C_EXT (0x2)150; SYM-NEXT:   NumberOfAuxEntries: 1151; SYM-NEXT:   CSECT Auxiliary Entry {152; SYM-NEXT:     Index: [[#UNDEF_INDX+7]]153; SYM-NEXT:     SectionLen: 0154; SYM-NEXT:     ParameterHashIndex: 0x0155; SYM-NEXT:     TypeChkSectNum: 0x0156; SYM-NEXT:     SymbolAlignmentLog2: 0157; SYM-NEXT:     SymbolType: XTY_ER (0x0)158; SYM-NEXT:     StorageMappingClass: XMC_PR (0x0)159; SYM32-NEXT:   StabInfoIndex: 0x0160; SYM32-NEXT:   StabSectNum: 0x0161; SYM64-NEXT:   Auxiliary Type: AUX_CSECT (0xFB)162; SYM-NEXT:   }163; SYM-NEXT: }164; SYM-NEXT: Symbol {165; SYM-NEXT:   Index: [[#UNDEF_INDX+8]]166; SYM-NEXT:   Name: foo167; SYM-NEXT:   Value (RelocatableAddress): 0x0168; SYM-NEXT:   Section: N_UNDEF169; SYM-NEXT:   Type: 0x0170; SYM-NEXT:   StorageClass: C_EXT (0x2)171; SYM-NEXT:   NumberOfAuxEntries: 1172; SYM-NEXT:   CSECT Auxiliary Entry {173; SYM-NEXT:     Index: [[#UNDEF_INDX+9]]174; SYM-NEXT:     SectionLen: 0175; SYM-NEXT:     ParameterHashIndex: 0x0176; SYM-NEXT:     TypeChkSectNum: 0x0177; SYM-NEXT:     SymbolAlignmentLog2: 0178; SYM-NEXT:     SymbolType: XTY_ER (0x0)179; SYM-NEXT:     StorageMappingClass: XMC_DS (0xA)180; SYM32-NEXT:   StabInfoIndex: 0x0181; SYM32-NEXT:   StabSectNum: 0x0182; SYM64-NEXT:   Auxiliary Type: AUX_CSECT (0xFB)183; SYM-NEXT:   }184; SYM-NEXT: }185 186; Test TOC entry symbol generation.187 188; SYM:       Symbol {{[{][[:space:]] *}}Index: [[#TOC_INDX:]]{{[[:space:]] *}}Name: TOC189; SYM32-NEXT:  Value (RelocatableAddress): 0xA8190; SYM64-NEXT:  Value (RelocatableAddress): 0xC0191; SYM-NEXT:    Section: .data192; SYM-NEXT:    Type: 0x0193; SYM-NEXT:    StorageClass: C_HIDEXT (0x6B)194; SYM-NEXT:    NumberOfAuxEntries: 1195; SYM-NEXT:    CSECT Auxiliary Entry {196; SYM-NEXT:      Index: [[#TOC_INDX+1]]197; SYM-NEXT:      SectionLen: 0198; SYM-NEXT:      ParameterHashIndex: 0x0199; SYM-NEXT:      TypeChkSectNum: 0x0200; SYM-NEXT:      SymbolAlignmentLog2: 2201; SYM-NEXT:      SymbolType: XTY_SD (0x1)202; SYM-NEXT:      StorageMappingClass: XMC_TC0 (0xF)203; SYM32-NEXT:    StabInfoIndex: 0x0204; SYM32-NEXT:    StabSectNum: 0x0205; SYM64-NEXT:    Auxiliary Type: AUX_CSECT (0xFB)206; SYM-NEXT:    }207; SYM-NEXT:  }208; SYM-NEXT:  Symbol {209; SYM-NEXT:    Index: [[#TOC_INDX+2]]210; SYM-NEXT:    Name: a211; SYM32-NEXT:  Value (RelocatableAddress): 0xA8212; SYM64-NEXT:  Value (RelocatableAddress): 0xC0213; SYM-NEXT:    Section: .data214; SYM-NEXT:    Type: 0x0215; SYM-NEXT:    StorageClass: C_HIDEXT (0x6B)216; SYM-NEXT:    NumberOfAuxEntries: 1217; SYM-NEXT:    CSECT Auxiliary Entry {218; SYM-NEXT:      Index: [[#TOC_INDX+3]]219; SYM32-NEXT:    SectionLen: 4220; SYM64-NEXT:    SectionLen: 8221; SYM-NEXT:      ParameterHashIndex: 0x0222; SYM-NEXT:      TypeChkSectNum: 0x0223; SYM32-NEXT:    SymbolAlignmentLog2: 2224; SYM64-NEXT:    SymbolAlignmentLog2: 3225; SYM-NEXT:      SymbolType: XTY_SD (0x1)226; SYM-NEXT:      StorageMappingClass: XMC_TC (0x3)227; SYM32-NEXT:    StabInfoIndex: 0x0228; SYM32-NEXT:    StabSectNum: 0x0229; SYM64-NEXT:    Auxiliary Type: AUX_CSECT (0xFB)230; SYM-NEXT:    }231; SYM-NEXT:  }232; SYM-NEXT:  Symbol {233; SYM-NEXT:    Index: [[#TOC_INDX+4]]234; SYM-NEXT:    Name: b235; SYM32-NEXT:  Value (RelocatableAddress): 0xAC236; SYM64-NEXT:  Value (RelocatableAddress): 0xC8237; SYM-NEXT:    Section: .data238; SYM-NEXT:    Type: 0x0239; SYM-NEXT:    StorageClass: C_HIDEXT (0x6B)240; SYM-NEXT:    NumberOfAuxEntries: 1241; SYM-NEXT:    CSECT Auxiliary Entry {242; SYM-NEXT:      Index: [[#TOC_INDX+5]]243; SYM32-NEXT:    SectionLen: 4244; SYM64-NEXT:    SectionLen: 8245; SYM-NEXT:      ParameterHashIndex: 0x0246; SYM-NEXT:      TypeChkSectNum: 0x0247; SYM32-NEXT:    SymbolAlignmentLog2: 2248; SYM64-NEXT:    SymbolAlignmentLog2: 3249; SYM-NEXT:      SymbolType: XTY_SD (0x1)250; SYM-NEXT:      StorageMappingClass: XMC_TC (0x3)251; SYM32-NEXT:    StabInfoIndex: 0x0252; SYM32-NEXT:    StabSectNum: 0x0253; SYM64-NEXT:    Auxiliary Type: AUX_CSECT (0xFB)254; SYM-NEXT:    }255; SYM-NEXT:  }256; SYM-NEXT:  Symbol {257; SYM-NEXT:    Index: [[#TOC_INDX+6]]258; SYM-NEXT:    Name: c259; SYM32-NEXT:  Value (RelocatableAddress): 0xB0260; SYM64-NEXT:  Value (RelocatableAddress): 0xD0261; SYM-NEXT:    Section: .data262; SYM-NEXT:    Type: 0x0263; SYM-NEXT:    StorageClass: C_HIDEXT (0x6B)264; SYM-NEXT:    NumberOfAuxEntries: 1265; SYM-NEXT:    CSECT Auxiliary Entry {266; SYM-NEXT:      Index: [[#TOC_INDX+7]]267; SYM32-NEXT:    SectionLen: 4268; SYM64-NEXT:    SectionLen: 8269; SYM-NEXT:      ParameterHashIndex: 0x0270; SYM-NEXT:      TypeChkSectNum: 0x0271; SYM32-NEXT:    SymbolAlignmentLog2: 2272; SYM64-NEXT:    SymbolAlignmentLog2: 3273; SYM-NEXT:      SymbolType: XTY_SD (0x1)274; SYM-NEXT:      StorageMappingClass: XMC_TC (0x3)275; SYM32-NEXT:    StabInfoIndex: 0x0276; SYM32-NEXT:    StabSectNum: 0x0277; SYM64-NEXT:    Auxiliary Type: AUX_CSECT (0xFB)278; SYM-NEXT:    }279; SYM-NEXT:  }280; SYM-NEXT:  Symbol {281; SYM-NEXT:    Index: [[#TOC_INDX+8]]282; SYM-NEXT:    Name: globa283; SYM32-NEXT:  Value (RelocatableAddress): 0xB4284; SYM64-NEXT:  Value (RelocatableAddress): 0xD8285; SYM-NEXT:    Section: .data286; SYM-NEXT:    Type: 0x0287; SYM-NEXT:    StorageClass: C_HIDEXT (0x6B)288; SYM-NEXT:    NumberOfAuxEntries: 1289; SYM-NEXT:    CSECT Auxiliary Entry {290; SYM-NEXT:      Index: [[#TOC_INDX+9]]291; SYM32-NEXT:    SectionLen: 4292; SYM64-NEXT:    SectionLen: 8293; SYM-NEXT:      ParameterHashIndex: 0x0294; SYM-NEXT:      TypeChkSectNum: 0x0295; SYM32-NEXT:    SymbolAlignmentLog2: 2296; SYM64-NEXT:    SymbolAlignmentLog2: 3297; SYM-NEXT:      SymbolType: XTY_SD (0x1)298; SYM-NEXT:      StorageMappingClass: XMC_TC (0x3)299; SYM32-NEXT:    StabInfoIndex: 0x0300; SYM32-NEXT:    StabSectNum: 0x0301; SYM64-NEXT:    Auxiliary Type: AUX_CSECT (0xFB)302; SYM-NEXT:    }303; SYM-NEXT:  }304; SYM-NEXT:  Symbol {305; SYM-NEXT:    Index: [[#TOC_INDX+10]]306; SYM-NEXT:    Name: ptr307; SYM32-NEXT:  Value (RelocatableAddress): 0xB8308; SYM64-NEXT:  Value (RelocatableAddress): 0xE0309; SYM-NEXT:    Section: .data310; SYM-NEXT:    Type: 0x0311; SYM-NEXT:    StorageClass: C_HIDEXT (0x6B)312; SYM-NEXT:    NumberOfAuxEntries: 1313; SYM-NEXT:    CSECT Auxiliary Entry {314; SYM-NEXT:      Index: [[#TOC_INDX+11]]315; SYM32-NEXT:    SectionLen: 4316; SYM64-NEXT:    SectionLen: 8317; SYM-NEXT:      ParameterHashIndex: 0x0318; SYM-NEXT:      TypeChkSectNum: 0x0319; SYM32-NEXT:    SymbolAlignmentLog2: 2320; SYM64-NEXT:    SymbolAlignmentLog2: 3321; SYM-NEXT:      SymbolType: XTY_SD (0x1)322; SYM-NEXT:      StorageMappingClass: XMC_TC (0x3)323; SYM32-NEXT:    StabInfoIndex: 0x0324; SYM32-NEXT:    StabSectNum: 0x0325; SYM64-NEXT:    Auxiliary Type: AUX_CSECT (0xFB)326; SYM-NEXT:    }327; SYM-NEXT:  }328; SYM-NEXT:  Symbol {329; SYM-NEXT:    Index: [[#TOC_INDX+12]]330; SYM-NEXT:    Name: bar331; SYM32-NEXT:  Value (RelocatableAddress): 0xBC332; SYM64-NEXT:  Value (RelocatableAddress): 0xE8333; SYM-NEXT:    Section: .data334; SYM-NEXT:    Type: 0x0335; SYM-NEXT:    StorageClass: C_HIDEXT (0x6B)336; SYM-NEXT:    NumberOfAuxEntries: 1337; SYM-NEXT:    CSECT Auxiliary Entry {338; SYM-NEXT:      Index: [[#TOC_INDX+13]]339; SYM32-NEXT:    SectionLen: 4340; SYM64-NEXT:    SectionLen: 8341; SYM-NEXT:      ParameterHashIndex: 0x0342; SYM-NEXT:      TypeChkSectNum: 0x0343; SYM32-NEXT:    SymbolAlignmentLog2: 2344; SYM64-NEXT:    SymbolAlignmentLog2: 3345; SYM-NEXT:      SymbolType: XTY_SD (0x1)346; SYM-NEXT:      StorageMappingClass: XMC_TC (0x3)347; SYM32-NEXT:    StabInfoIndex: 0x0348; SYM32-NEXT:    StabSectNum: 0x0349; SYM64-NEXT:    Auxiliary Type: AUX_CSECT (0xFB)350; SYM-NEXT:    }351; SYM-NEXT:  }352; SYM-NEXT:  Symbol {353; SYM-NEXT:    Index: [[#TOC_INDX+14]]354; SYM-NEXT:    Name: foo355; SYM32-NEXT:  Value (RelocatableAddress): 0xC0356; SYM64-NEXT:  Value (RelocatableAddress): 0xF0357; SYM-NEXT:    Section: .data358; SYM-NEXT:    Type: 0x0359; SYM-NEXT:    StorageClass: C_HIDEXT (0x6B)360; SYM-NEXT:    NumberOfAuxEntries: 1361; SYM-NEXT:    CSECT Auxiliary Entry {362; SYM-NEXT:      Index: [[#TOC_INDX+15]]363; SYM32-NEXT:    SectionLen: 4364; SYM64-NEXT:    SectionLen: 8365; SYM-NEXT:      ParameterHashIndex: 0x0366; SYM-NEXT:      TypeChkSectNum: 0x0367; SYM32-NEXT:    SymbolAlignmentLog2: 2368; SYM64-NEXT:    SymbolAlignmentLog2: 3369; SYM-NEXT:      SymbolType: XTY_SD (0x1)370; SYM-NEXT:      StorageMappingClass: XMC_TC (0x3)371; SYM32-NEXT:    StabInfoIndex: 0x0372; SYM32-NEXT:    StabSectNum: 0x0373; SYM64-NEXT:    Auxiliary Type: AUX_CSECT (0xFB)374; SYM-NEXT:    }375; SYM-NEXT:  }376; SYM-NEXT:  Symbol {377; SYM-NEXT:    Index: [[#TOC_INDX+16]]378; SYM-NEXT:    Name: foobar379; SYM32-NEXT:  Value (RelocatableAddress): 0xC4380; SYM64-NEXT:  Value (RelocatableAddress): 0xF8381; SYM-NEXT:    Section: .data382; SYM-NEXT:    Type: 0x0383; SYM-NEXT:    StorageClass: C_HIDEXT (0x6B)384; SYM-NEXT:    NumberOfAuxEntries: 1385; SYM-NEXT:    CSECT Auxiliary Entry {386; SYM-NEXT:      Index: [[#TOC_INDX+17]]387; SYM32-NEXT:    SectionLen: 4388; SYM64-NEXT:    SectionLen: 8389; SYM-NEXT:      ParameterHashIndex: 0x0390; SYM-NEXT:      TypeChkSectNum: 0x0391; SYM32-NEXT:    SymbolAlignmentLog2: 2392; SYM64-NEXT:    SymbolAlignmentLog2: 3393; SYM-NEXT:      SymbolType: XTY_SD (0x1)394; SYM-NEXT:      StorageMappingClass: XMC_TC (0x3)395; SYM32-NEXT:    StabInfoIndex: 0x0396; SYM32-NEXT:    StabSectNum: 0x0397; SYM64-NEXT:    Auxiliary Type: AUX_CSECT (0xFB)398; SYM-NEXT:    }399; SYM-NEXT:  }400