blob: 0543077c01c7e9d48772058cffe7020639ad2667 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -x assembler-with-cpp -E %s -o - | FileCheck -strict-whitespace -check-prefix=CHECK-Identifiers-False %s
Daniel Dunbar5bea06a2008-12-01 19:23:47 +00002
3#ifndef __ASSEMBLER__
4#error "__ASSEMBLER__ not defined"
5#endif
Chris Lattnere966d9a2009-03-20 16:28:22 +00006
7
8// Invalid token pasting is ok.
Chris Lattnere966d9a2009-03-20 16:28:22 +00009#define A X ## .
101: A
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000011// CHECK-Identifiers-False: 1: X .
Chris Lattnere966d9a2009-03-20 16:28:22 +000012
13// Line markers are not linemarkers in .S files, they are passed through.
Chris Lattnere966d9a2009-03-20 16:28:22 +000014# 321
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000015// CHECK-Identifiers-False: # 321
Chris Lattnere966d9a2009-03-20 16:28:22 +000016
17// Unknown directives are passed through.
Chris Lattnere966d9a2009-03-20 16:28:22 +000018# B C
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000019// CHECK-Identifiers-False: # B C
Chris Lattnere966d9a2009-03-20 16:28:22 +000020
21// Unknown directives are expanded.
Chris Lattnere966d9a2009-03-20 16:28:22 +000022#define D(x) BAR ## x
23# D(42)
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000024// CHECK-Identifiers-False: # BAR42
Chris Lattnere966d9a2009-03-20 16:28:22 +000025
26// Unmatched quotes are permitted.
Chris Lattnere966d9a2009-03-20 16:28:22 +0000272: '
283: "
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000029// CHECK-Identifiers-False: 2: '
30// CHECK-Identifiers-False: 3: "
Chris Lattnere966d9a2009-03-20 16:28:22 +000031
Daniel Dunbarc25d8052009-05-22 21:35:34 +000032// (balance quotes to keep editors happy): "'
33
Chris Lattnere966d9a2009-03-20 16:28:22 +000034// Empty char literals are ok.
Chris Lattnere966d9a2009-03-20 16:28:22 +0000354: ''
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000036// CHECK-Identifiers-False: 4: ''
Chris Lattnere966d9a2009-03-20 16:28:22 +000037
Chris Lattnerf1538de2009-03-23 17:32:45 +000038
39// Portions of invalid pasting should still expand as macros.
40// rdar://6709206
Chris Lattnerf1538de2009-03-23 17:32:45 +000041#define M4 expanded
Mike Stump1eb44332009-09-09 15:08:12 +000042#define M5() M4 ## (
Chris Lattnerf1538de2009-03-23 17:32:45 +000043
445: M5()
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000045// CHECK-Identifiers-False: 5: expanded (
Chris Lattnerf1538de2009-03-23 17:32:45 +000046
Chris Lattnerf5db8f82009-04-19 07:00:02 +000047// rdar://6804322
Chris Lattnerf5db8f82009-04-19 07:00:02 +000048#define FOO(name) name ## $foo
496: FOO(blarg)
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000050// CHECK-Identifiers-False: 6: blarg $foo
Chris Lattnerf5db8f82009-04-19 07:00:02 +000051
Daniel Dunbara5728872009-12-15 20:14:24 +000052// RUN: %clang_cc1 -x assembler-with-cpp -fdollars-in-identifiers -E %s -o - | FileCheck -check-prefix=CHECK-Identifiers-True -strict-whitespace %s
Chris Lattnerf5db8f82009-04-19 07:00:02 +000053#define FOO(name) name ## $foo
547: FOO(blarg)
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000055// CHECK-Identifiers-True: 7: blarg$foo
Chris Lattnerf1538de2009-03-23 17:32:45 +000056
Daniel Dunbarc25d8052009-05-22 21:35:34 +000057//
58#define T6() T6 #nostring
59#define T7(x) T7 #x
Chris Lattner32404692009-05-25 17:16:10 +0000608: T6()
619: T7(foo)
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000062// CHECK-Identifiers-True: 8: T6 #nostring
63// CHECK-Identifiers-True: 9: T7 "foo"
Daniel Dunbarc25d8052009-05-22 21:35:34 +000064
Eli Friedman4c3ba6c2009-05-24 19:25:46 +000065// Concatenation with period doesn't leave a space
Eli Friedman4c3ba6c2009-05-24 19:25:46 +000066#define T8(A,B) A ## B
Chris Lattner32404692009-05-25 17:16:10 +00006710: T8(.,T8)
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000068// CHECK-Identifiers-True: 10: .T8
Chris Lattner32404692009-05-25 17:16:10 +000069
70// This should not crash.
Chris Lattner32404692009-05-25 17:16:10 +000071#define T11(a) #0
7211: T11(b)
Edward O'Callaghan9b0cffe2009-10-27 03:47:36 +000073// CHECK-Identifiers-True: 11: #0
Eli Friedman4c3ba6c2009-05-24 19:25:46 +000074