blob: ecb77e5f964a21e5733c955a2965c7ed0c71ab9f [file] [log] [blame]
Chris Lattnere966d9a2009-03-20 16:28:22 +00001// RUN: clang -x assembler-with-cpp -E %s > %t &&
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.
9// RUN: grep '1: X .' %t &&
10#define A X ## .
111: A
12
13// Line markers are not linemarkers in .S files, they are passed through.
14// RUN: grep '# 321' %t &&
15# 321
16
17// Unknown directives are passed through.
18// RUN: grep '# B C' %t &&
19# B C
20
21// Unknown directives are expanded.
22// RUN: grep '# BAR42' %t &&
23#define D(x) BAR ## x
24# D(42)
25
26// Unmatched quotes are permitted.
27// RUN: grep "2: '" %t &&
28// RUN: grep '3: "' %t &&
292: '
303: "
31
32// Empty char literals are ok.
33// RUN: grep "4: ''" %t &&
344: ''
35
Chris Lattnerf1538de2009-03-23 17:32:45 +000036
37// Portions of invalid pasting should still expand as macros.
38// rdar://6709206
39// RUN: grep "5: expanded (" %t &&
40#define M4 expanded
41#define M5() M4 ## (
42
435: M5()
44
45
46
Chris Lattnere966d9a2009-03-20 16:28:22 +000047// RUN: true