xref: /llvm-project/clang/test/Misc/inline-asm-clobber-warning.c (revision 2db090a2ebd76f120bfae4fbe4b7241667aa585e)
1 /// This test checks that the warning includes the location in the C source
2 /// file that contains the inline asm. Instead of saying <inline asm> for both.
3 /// Although this warning is emitted in llvm it cannot be tested from IR as
4 /// it does not have that location information at that stage.
5 
6 // RUN: %clang -target arm-arm-none-eabi -march=armv7-m -c %s -o /dev/null \
7 // RUN:   2>&1 | FileCheck %s
8 
9 // REQUIRES: arm-registered-target
10 
bar(void)11 void bar(void) {
12   __asm__ __volatile__("nop"
13                        :
14                        :
15                        : "sp");
16 }
17 
18 // CHECK:      inline-asm-clobber-warning.c:12:24: warning: inline asm clobber list contains reserved registers: SP [-Winline-asm]
19 // CHECK-NEXT:     __asm__ __volatile__("nop"
20 // CHECK-NEXT:                          ^
21 // CHECK-NEXT: inline-asm-clobber-warning.c:12:24: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour.
22