assembler-with-cpp.c revision c5b7e8d1c0ebbdbb3e6c81616498b9acc612e157
1// RUN: clang-cc -x assembler-with-cpp -fdollars-in-identifiers=0 -E %s > %t && 2 3#ifndef __ASSEMBLER__ 4#error "__ASSEMBLER__ not defined" 5#endif 6 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// (balance quotes to keep editors happy): "' 33 34// Empty char literals are ok. 35// RUN: grep "4: ''" %t && 364: '' 37 38 39// Portions of invalid pasting should still expand as macros. 40// rdar://6709206 41// RUN: grep "5: expanded (" %t && 42#define M4 expanded 43#define M5() M4 ## ( 44 455: M5() 46 47// rdar://6804322 48// RUN: grep -F "6: blarg $foo" %t && 49#define FOO(name) name ## $foo 506: FOO(blarg) 51 52// RUN: clang-cc -x assembler-with-cpp -fdollars-in-identifiers=1 -E %s > %t && 53// RUN: grep -F "7: blarg$foo" %t && 54#define FOO(name) name ## $foo 557: FOO(blarg) 56 57 58// 59#define T6() T6 #nostring 60#define T7(x) T7 #x 61T6() 62T7(foo) 63// RUN: grep 'T6 #nostring' %t && 64// RUN: grep 'T7 "foo"' %t && 65 66// Concatenation with period doesn't leave a space 67// RUN: grep -F '.T8' %t && 68#define T8(A,B) A ## B 69T8(.,T8) 70 71// RUN: true 72