1afa2fbf8SIgor Kudrin /// Check that -ffixed register handled for globals. 2afa2fbf8SIgor Kudrin /// Regression test for #76426, #109778 3afa2fbf8SIgor Kudrin // REQUIRES: aarch64-registered-target 4afa2fbf8SIgor Kudrin 5*a6b5e18fSJordan Rupprecht // RUN: %clang -c --target=aarch64-none-gnu -ffixed-x15 %s -o /dev/null 2>&1 | count 0 6afa2fbf8SIgor Kudrin 7*a6b5e18fSJordan Rupprecht // RUN: not %clang -c --target=aarch64-none-gnu %s -o /dev/null 2>&1 | \ 8afa2fbf8SIgor Kudrin // RUN: FileCheck %s --check-prefix=ERR_INVREG 9afa2fbf8SIgor Kudrin // ERR_INVREG: error: register 'x15' unsuitable for global register variables on this target 10afa2fbf8SIgor Kudrin 11*a6b5e18fSJordan Rupprecht // RUN: not %clang -c --target=aarch64-none-gnu -ffixed-x15 -DTYPE=short %s -o /dev/null 2>&1 | \ 12afa2fbf8SIgor Kudrin // RUN: FileCheck %s --check-prefix=ERR_SIZE 13afa2fbf8SIgor Kudrin // ERR_SIZE: error: size of register 'x15' does not match variable size 14afa2fbf8SIgor Kudrin 15afa2fbf8SIgor Kudrin #ifndef TYPE 16afa2fbf8SIgor Kudrin #define TYPE long 17afa2fbf8SIgor Kudrin #endif 18afa2fbf8SIgor Kudrin 19afa2fbf8SIgor Kudrin register TYPE x15 __asm__("x15"); 20afa2fbf8SIgor Kudrin 21afa2fbf8SIgor Kudrin TYPE foo() { 22afa2fbf8SIgor Kudrin return x15; 23afa2fbf8SIgor Kudrin } 24