|  | ;; This file tests how llc handles symbols containing invalid characters on an | 
|  | ;; XCOFF platform. | 
|  | ;; Since symbol name resolution is the same between 32-bit and 64-bit, | 
|  | ;; tests for 64-bit mode are omitted. | 
|  |  | 
|  | ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ | 
|  | ; RUN:     -mattr=-altivec -data-sections=false -xcoff-traceback-table=false < %s | \ | 
|  | ; RUN:   FileCheck --check-prefix=ASM %s | 
|  |  | 
|  | ; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr4 \ | 
|  | ; RUN:     -mattr=-altivec -data-sections=false -xcoff-traceback-table=false -filetype=obj -o %t.o < %s | 
|  | ; RUN: llvm-objdump -D -r --symbol-description %t.o | \ | 
|  | ; RUN:   FileCheck --check-prefix=OBJ -D#NFA=2 %s | 
|  |  | 
|  | ; This is f`o | 
|  | @"f\60o" = global i32 10, align 4 | 
|  |  | 
|  | ; This is f"o" | 
|  | @"f\22o\22" = common global i32 0, align 4 | 
|  |  | 
|  | ; This is f=o | 
|  | @"f\3do" = internal global i32 0, align 4 | 
|  |  | 
|  | define internal i32 @f$o() { | 
|  | entry: | 
|  | %call = call i32 @"f\40o"() | 
|  | ret i32 %call | 
|  | } | 
|  |  | 
|  | ; This is f&o | 
|  | define i32 @"f\26o"() { | 
|  | entry: | 
|  | %tmp = call i32 @f$o() | 
|  | %tmp1 = load i32, ptr @"f\3do" | 
|  | %tmp2 = add i32 %tmp, %tmp1 | 
|  | ret i32 %tmp2 | 
|  | } | 
|  |  | 
|  | ; This is f&_o | 
|  | define ptr @"f\26_o"() { | 
|  | entry: | 
|  | ret ptr @"f\40o" | 
|  | } | 
|  |  | 
|  | ; This is f@o | 
|  | declare i32 @"f\40o"(...) | 
|  |  | 
|  | ; ASM:         .lglobl _Renamed..24f_o[DS] # -- Begin function f$o | 
|  | ; ASM-NEXT:    .rename _Renamed..24f_o[DS],"f$o" | 
|  | ; ASM-NEXT:    .lglobl ._Renamed..24f_o | 
|  | ; ASM-NEXT:    .rename ._Renamed..24f_o,".f$o" | 
|  | ; ASM-NEXT:    .align  4 | 
|  | ; ASM-NEXT:    .csect _Renamed..24f_o[DS],2 | 
|  | ; ASM-NEXT:    .vbyte  4, ._Renamed..24f_o     # @"f$o" | 
|  | ; ASM-NEXT:    .vbyte  4, TOC[TC0] | 
|  | ; ASM-NEXT:    .vbyte  4, 0 | 
|  | ; ASM-NEXT:    .csect ..text..[PR],5 | 
|  | ; ASM-NEXT:  ._Renamed..24f_o: | 
|  | ; ASM:         bl ._Renamed..40f_o[PR] | 
|  | ; ASM-NEXT:    nop | 
|  | ; ASM:         .globl  _Renamed..26f_o[DS] # -- Begin function f&o | 
|  | ; ASM-NEXT:    .rename _Renamed..26f_o[DS],"f&o" | 
|  | ; ASM-NEXT:    .globl  ._Renamed..26f_o | 
|  | ; ASM-NEXT:    .rename ._Renamed..26f_o,".f&o" | 
|  | ; ASM-NEXT:    .align  4 | 
|  | ; ASM-NEXT:    .csect _Renamed..26f_o[DS],2 | 
|  | ; ASM-NEXT:    .vbyte  4, ._Renamed..26f_o     # @"f&o" | 
|  | ; ASM-NEXT:    .vbyte  4, TOC[TC0] | 
|  | ; ASM-NEXT:    .vbyte  4, 0 | 
|  | ; ASM-NEXT:    .csect ..text..[PR],5 | 
|  | ; ASM-NEXT:  ._Renamed..26f_o: | 
|  | ; ASM:         bl ._Renamed..24f_o | 
|  | ; ASM:         .globl  _Renamed..265ff__o[DS] # -- Begin function f&_o | 
|  | ; ASM-NEXT:    .rename _Renamed..265ff__o[DS],"f&_o" | 
|  | ; ASM-NEXT:    .globl  ._Renamed..265ff__o | 
|  | ; ASM-NEXT:    .rename ._Renamed..265ff__o,".f&_o" | 
|  | ; ASM-NEXT:    .align  4 | 
|  | ; ASM-NEXT:    .csect _Renamed..265ff__o[DS],2 | 
|  | ; ASM-NEXT:    .vbyte  4, ._Renamed..265ff__o  # @"f&_o" | 
|  | ; ASM-NEXT:    .vbyte  4, TOC[TC0] | 
|  | ; ASM-NEXT:    .vbyte  4, 0 | 
|  | ; ASM-NEXT:    .csect ..text..[PR],5 | 
|  | ; ASM-NEXT:  ._Renamed..265ff__o: | 
|  | ; ASM:         .csect .data[RW],2 | 
|  | ; ASM-NEXT:    .globl  _Renamed..60f_o | 
|  | ; ASM-NEXT:    .rename _Renamed..60f_o,"f`o" | 
|  | ; ASM-NEXT:    .align  2 | 
|  | ; ASM-NEXT:  _Renamed..60f_o: | 
|  | ; ASM-NEXT:    .vbyte  4, 10                   # 0xa | 
|  | ; ASM-NEXT:    .comm _Renamed..2222f_o_[RW],4,2 | 
|  | ; ASM-NEXT:    .rename _Renamed..2222f_o_[RW],"f""o""" | 
|  | ; ASM-NEXT:    .lcomm  _Renamed..3df_o,4,_Renamed..3df_o[BS],2 | 
|  | ; ASM-NEXT:    .rename _Renamed..3df_o[BS],"f=o" | 
|  | ; ASM-NEXT:    .extern ._Renamed..40f_o[PR] | 
|  | ; ASM-NEXT:    .rename ._Renamed..40f_o[PR],".f@o" | 
|  | ; ASM-NEXT:    .extern _Renamed..40f_o[DS] | 
|  | ; ASM-NEXT:    .rename _Renamed..40f_o[DS],"f@o" | 
|  | ; ASM-NEXT:    .toc | 
|  | ; ASM-NEXT:  L..C0: | 
|  | ; ASM-NEXT:    .tc _Renamed..3df_o[TC],_Renamed..3df_o[BS] | 
|  | ; ASM-NEXT:    .rename _Renamed..3df_o[TC],"f=o" | 
|  | ; ASM-NEXT:  L..C1: | 
|  | ; ASM-NEXT:    .tc _Renamed..40f_o[TC],_Renamed..40f_o[DS] | 
|  | ; ASM-NEXT:    .rename _Renamed..40f_o[TC],"f@o" | 
|  |  | 
|  | ; OBJ:       Disassembly of section .text: | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  00000000 (idx: [[#NFA+7]]) .f$o: | 
|  | ; OBJ-NEXT:         0: 7c 08 02 a6   mflr 0 | 
|  | ; OBJ-NEXT:         4: 94 21 ff c0   stwu 1, -64(1) | 
|  | ; OBJ-NEXT:         8: 90 01 00 48   stw 0, 72(1) | 
|  | ; OBJ-NEXT:         c: 4b ff ff f5   bl 0x0 | 
|  | ; OBJ-NEXT:                          0000000c:  R_RBR        (idx: [[#NFA+1]]) .f@o[PR] | 
|  | ; OBJ-NEXT:        10: 60 00 00 00   nop | 
|  | ; OBJ-NEXT:        14: 38 21 00 40   addi 1, 1, 64 | 
|  | ; OBJ-NEXT:        18: 80 01 00 08   lwz 0, 8(1) | 
|  | ; OBJ-NEXT:        1c: 7c 08 03 a6   mtlr 0 | 
|  | ; OBJ-NEXT:        20: 4e 80 00 20   blr | 
|  | ; OBJ-NEXT:        24: 60 00 00 00   nop | 
|  | ; OBJ-NEXT:        28: 60 00 00 00   nop | 
|  | ; OBJ-NEXT:        2c: 60 00 00 00   nop | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  00000030 (idx: [[#NFA+9]]) .f&o: | 
|  | ; OBJ-NEXT:        30: 7c 08 02 a6   mflr 0 | 
|  | ; OBJ-NEXT:        34: 94 21 ff c0   stwu 1, -64(1) | 
|  | ; OBJ-NEXT:        38: 90 01 00 48   stw 0, 72(1) | 
|  | ; OBJ-NEXT:        3c: 4b ff ff c5   bl 0x0 | 
|  | ; OBJ-NEXT:        40: 80 82 00 00   lwz 4, 0(2) | 
|  | ; OBJ-NEXT:                          00000042:  R_TOC        (idx: [[#NFA+25]]) f=o[TC] | 
|  | ; OBJ-NEXT:        44: 80 84 00 00   lwz 4, 0(4) | 
|  | ; OBJ-NEXT:        48: 7c 63 22 14   add 3, 3, 4 | 
|  | ; OBJ-NEXT:        4c: 38 21 00 40   addi 1, 1, 64 | 
|  | ; OBJ-NEXT:        50: 80 01 00 08   lwz 0, 8(1) | 
|  | ; OBJ-NEXT:        54: 7c 08 03 a6   mtlr 0 | 
|  | ; OBJ-NEXT:        58: 4e 80 00 20   blr | 
|  | ; OBJ-NEXT:        5c: 60 00 00 00   nop | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  00000060 (idx: [[#NFA+11]]) .f&_o: | 
|  | ; OBJ-NEXT:        60: 80 62 00 04   lwz 3, 4(2) | 
|  | ; OBJ-NEXT:                          00000062:  R_TOC        (idx: [[#NFA+27]]) f@o[TC] | 
|  | ; OBJ-NEXT:        64: 4e 80 00 20   blr | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  Disassembly of section .data: | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  00000068 (idx: [[#NFA+15]]) f`o: | 
|  | ; OBJ-NEXT:        68: 00 00 00 0a   <unknown> | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  0000006c (idx: [[#NFA+17]]) f$o[DS]: | 
|  | ; OBJ-NEXT:        6c: 00 00 00 00   <unknown> | 
|  | ; OBJ-NEXT:                          0000006c:  R_POS        (idx: [[#NFA+7]]) .f$o | 
|  | ; OBJ-NEXT:        70: 00 00 00 90   <unknown> | 
|  | ; OBJ-NEXT:                          00000070:  R_POS        (idx: [[#NFA+23]]) TOC[TC0] | 
|  | ; OBJ-NEXT:        74: 00 00 00 00   <unknown> | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  00000078 (idx: [[#NFA+19]]) f&o[DS]: | 
|  | ; OBJ-NEXT:        78: 00 00 00 30   <unknown> | 
|  | ; OBJ-NEXT:                          00000078:  R_POS        (idx: [[#NFA+9]]) .f&o | 
|  | ; OBJ-NEXT:        7c: 00 00 00 90   <unknown> | 
|  | ; OBJ-NEXT:                          0000007c:  R_POS        (idx: [[#NFA+23]]) TOC[TC0] | 
|  | ; OBJ-NEXT:        80: 00 00 00 00   <unknown> | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  00000084 (idx: [[#NFA+21]]) f&_o[DS]: | 
|  | ; OBJ-NEXT:        84: 00 00 00 60   <unknown> | 
|  | ; OBJ-NEXT:                          00000084:  R_POS        (idx: [[#NFA+11]]) .f&_o | 
|  | ; OBJ-NEXT:        88: 00 00 00 90   <unknown> | 
|  | ; OBJ-NEXT:                          00000088:  R_POS        (idx: [[#NFA+23]]) TOC[TC0] | 
|  | ; OBJ-NEXT:        8c: 00 00 00 00   <unknown> | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  00000090 (idx: [[#NFA+25]]) f=o[TC]: | 
|  | ; OBJ-NEXT:        90: 00 00 00 9c   <unknown> | 
|  | ; OBJ-NEXT:                          00000090:  R_POS        (idx: [[#NFA+31]]) f=o[BS] | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  00000094 (idx: [[#NFA+27]]) f@o[TC]: | 
|  | ; OBJ-NEXT:        94: 00 00 00 00   <unknown> | 
|  | ; OBJ-NEXT:                          00000094:  R_POS        (idx: [[#NFA+3]]) f@o[DS] | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  Disassembly of section .bss: | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  00000098 (idx: [[#NFA+29]]) f"o"[RW]: | 
|  | ; OBJ-NEXT:  ... | 
|  | ; OBJ-EMPTY: | 
|  | ; OBJ-NEXT:  0000009c (idx: [[#NFA+31]]) f=o[BS]: | 
|  | ; OBJ-NEXT:  ... |