18c2ecf20Sopenharmony_ci#!/bin/sh 28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 38c2ecf20Sopenharmony_ci# Test for gcc 'asm goto' support 48c2ecf20Sopenharmony_ci# Copyright (C) 2010, Jason Baron <jbaron@redhat.com> 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_cicat << "END" | $@ -x c - -fno-PIE -c -o /dev/null 78c2ecf20Sopenharmony_ciint main(void) 88c2ecf20Sopenharmony_ci{ 98c2ecf20Sopenharmony_ci#if defined(__arm__) || defined(__aarch64__) 108c2ecf20Sopenharmony_ci /* 118c2ecf20Sopenharmony_ci * Not related to asm goto, but used by jump label 128c2ecf20Sopenharmony_ci * and broken on some ARM GCC versions (see GCC Bug 48637). 138c2ecf20Sopenharmony_ci */ 148c2ecf20Sopenharmony_ci static struct { int dummy; int state; } tp; 158c2ecf20Sopenharmony_ci asm (".long %c0" :: "i" (&tp.state)); 168c2ecf20Sopenharmony_ci#endif 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cientry: 198c2ecf20Sopenharmony_ci asm goto ("" :::: entry); 208c2ecf20Sopenharmony_ci return 0; 218c2ecf20Sopenharmony_ci} 228c2ecf20Sopenharmony_ciEND 23