Home | History | Annotate | Download | only in X86
      1 ; Test that symbols starting with '?' are not affected by IR mangling.
      2 
      3 ; RUN: llc -mtriple i686-pc-win32 < %s | FileCheck %s --check-prefix=COFF
      4 ; RUN: llc -mtriple x86_64-pc-win32 < %s | FileCheck %s --check-prefix=COFF64
      5 ; RUN: llc -mtriple i686-linux-gnu < %s | FileCheck %s --check-prefix=ELF
      6 ; RUN: llc -mtriple i686-apple-darwin < %s | FileCheck %s --check-prefix=MACHO
      7 
      8 ; Currently all object files allow escaping private symbols, but eventually we
      9 ; might want to reject that.
     10 
     11 ; COFF: calll "?withescape@A@@QBEXXZ"
     12 ; COFF: calll "?withquestion@A@@QBEXXZ"
     13 ; COFF: calll "L?privatequestion@A@@QBEXXZ"
     14 ; COFF: calll "L?privatequestionfast@A@@QBEXXZ"
     15 ; COFF: calll "?escapedprivate@A@@QBEXXZ"
     16 
     17 ; COFF64: callq "?withescape@A@@QBEXXZ"
     18 ; COFF64: callq "?withquestion@A@@QBEXXZ"
     19 ; COFF64: callq ".L?privatequestion@A@@QBEXXZ"
     20 ; COFF64: callq ".L?privatequestionfast@A@@QBEXXZ"
     21 ; COFF64: callq "?escapedprivate@A@@QBEXXZ"
     22 
     23 ; ELF: calll "?withescape@A@@QBEXXZ"
     24 ; ELF: calll "?withquestion@A@@QBEXXZ"
     25 ; ELF: calll ".L?privatequestion@A@@QBEXXZ"
     26 ; ELF: calll ".L?privatequestionfast@A@@QBEXXZ"
     27 ; ELF: calll "?escapedprivate@A@@QBEXXZ"
     28 
     29 ; MACHO: calll "?withescape@A@@QBEXXZ"
     30 ; MACHO: calll "_?withquestion@A@@QBEXXZ"
     31 ; MACHO: calll "l_?privatequestion@A@@QBEXXZ"
     32 ; MACHO: calll "l_?privatequestionfast@A@@QBEXXZ"
     33 ; MACHO: calll "?escapedprivate@A@@QBEXXZ"
     34 
     35 %struct.A = type {}
     36 
     37 define i32 @main() {
     38 entry:
     39   tail call void @"\01?withescape@A@@QBEXXZ"(%struct.A* null)
     40   tail call void @"?withquestion@A@@QBEXXZ"(%struct.A* null)
     41   tail call void @"?privatequestion@A@@QBEXXZ"(%struct.A* null)
     42   tail call x86_fastcallcc void @"?privatequestionfast@A@@QBEXXZ"(%struct.A* null)
     43   tail call void @"\01?escapedprivate@A@@QBEXXZ"(%struct.A* null)
     44   ret i32 0
     45 }
     46 
     47 declare void @"\01?withescape@A@@QBEXXZ"(%struct.A*)
     48 declare void @"?withquestion@A@@QBEXXZ"(%struct.A*)
     49 
     50 define private void @"?privatequestion@A@@QBEXXZ"(%struct.A*) {
     51   ret void
     52 }
     53 
     54 define private x86_fastcallcc void @"?privatequestionfast@A@@QBEXXZ"(%struct.A*) {
     55   ret void
     56 }
     57 
     58 define private void @"\01?escapedprivate@A@@QBEXXZ"(%struct.A*) {
     59   ret void
     60 }
     61