diff options
Diffstat (limited to 'scripts/gcc-goto.sh')
| -rw-r--r-- | scripts/gcc-goto.sh | 20 | 
1 files changed, 18 insertions, 2 deletions
diff --git a/scripts/gcc-goto.sh b/scripts/gcc-goto.sh index 520d16b1ffa..c9469d34ecc 100644 --- a/scripts/gcc-goto.sh +++ b/scripts/gcc-goto.sh @@ -1,5 +1,21 @@  #!/bin/sh -# Test for gcc 'asm goto' suport +# Test for gcc 'asm goto' support  # Copyright (C) 2010, Jason Baron <jbaron@redhat.com> -echo "int main(void) { entry: asm goto (\"\"::::entry); return 0; }" | $@ -x c - -c -o /dev/null >/dev/null 2>&1 && echo "y" +cat << "END" | $@ -x c - -c -o /dev/null >/dev/null 2>&1 && echo "y" +int main(void) +{ +#if defined(__arm__) || defined(__aarch64__) +	/* +	 * Not related to asm goto, but used by jump label +	 * and broken on some ARM GCC versions (see GCC Bug 48637). +	 */ +	static struct { int dummy; int state; } tp; +	asm (".long %c0" :: "i" (&tp.state)); +#endif + +entry: +	asm goto ("" :::: entry); +	return 0; +} +END  | 
