1 // RUN: clang -x assembler-with-cpp -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 ## . 11 1: 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 && 29 2: ' 30 3: " 31 32 // Empty char literals are ok. 33 // RUN: grep "4: ''" %t && 34 4: '' 35 36 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 43 5: M5() 44 45 46 47 // RUN: true 48