blob: 582f65d39879a97e4fab98c642011e06805dc5cf [file] [log] [blame]
Reid Klecknerf8b51c52018-03-16 20:13:32 +00001; 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
37define i32 @main() {
38entry:
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
47declare void @"\01?withescape@A@@QBEXXZ"(%struct.A*)
48declare void @"?withquestion@A@@QBEXXZ"(%struct.A*)
49
50define private void @"?privatequestion@A@@QBEXXZ"(%struct.A*) {
51 ret void
52}
53
54define private x86_fastcallcc void @"?privatequestionfast@A@@QBEXXZ"(%struct.A*) {
55 ret void
56}
57
58define private void @"\01?escapedprivate@A@@QBEXXZ"(%struct.A*) {
59 ret void
60}