From mboxrd@z Thu Jan 1 00:00:00 1970 From: "H. Peter Anvin" Subject: Re: [PATCH 1/2] UNREACHABLE() macro Date: Sun, 13 Sep 2009 13:10:45 -0700 Message-ID: <4AAD51C5.3050803@kernel.org> References: <20090910015923.8FB628AE5F@magilla.sf.frob.com> <20090910020031.87DC68BF6E@magilla.sf.frob.com> <20090911134528.cd1782d9.akpm@linux-foundation.org> <20090911215525.12B366A98F@magilla.sf.frob.com> <20090912054906.22b05848@infradead.org> <4AAB26FE.7010309@kernel.org> <20090911225228.e67460f5.akpm@linux-foundation.org> <20090912063840.GR14664@tyan-ft48-01.lab.bos.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Return-path: Received: from terminus.zytor.com ([198.137.202.10]:36848 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751111AbZIMUQH (ORCPT ); Sun, 13 Sep 2009 16:16:07 -0400 In-Reply-To: <20090912063840.GR14664@tyan-ft48-01.lab.bos.redhat.com> Sender: linux-arch-owner@vger.kernel.org List-ID: To: Jakub Jelinek Cc: Andrew Morton , Arjan van de Ven , Roland McGrath , torvalds@linux-foundation.org, linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, x86@kernel.org On 09/11/2009 11:38 PM, Jakub Jelinek wrote: >>> >>> That works for flags, but not for the presence of builtin functions. >>> You can't even just try compiling something, since it will turn into an >>> ordinary function if not present... not obvious until link. >> >> Use -Wall -Werror and if the compiler doesn't know about >> __builtin_unreachable() it will error out. > > Yeah, e.g. checking exit status of: > echo '__attribute__((noreturn)) void foo (void) { asm volatile ("" : : : "memory"); __builtin_unreachable (); }' | gcc -S -O2 -W -Wall -Werror -xc - -o /dev/null > /dev/null 2>/dev/null > works. > OK, that makes sense... although perhaps it would be cleaner to use something that could work for other builtins. One advantage of using "nm" would be that it could answer the general question "does this version of gcc support __builtin_X() without resorting to libgcc", which matters quite a bit for functions like __builtin_ctzl() and so on. -hpa