This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
middle-end/10011: Broken __builtin_constant_p
- From: schwab at gnu dot org
- To: gcc-gnats at gcc dot gnu dot org
- Date: 9 Mar 2003 20:45:04 -0000
- Subject: middle-end/10011: Broken __builtin_constant_p
- Reply-to: schwab at gnu dot org
>Number: 10011
>Category: middle-end
>Synopsis: Broken __builtin_constant_p
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Sun Mar 09 20:46:01 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: Andreas Schwab
>Release: 3.4 20030306 (experimental)
>Organization:
>Environment:
System: Linux whitebox 2.4.20-ben7 #1 Thu Feb 27 00:38:54 CET 2003 ppc unknown unknown GNU/Linux
Architecture: ppc
host: powerpc-unknown-linux-gnu
build: powerpc-unknown-linux-gnu
target: powerpc-unknown-linux-gnu
configured with: ../gcc/configure --prefix=/usr/local/powerpc-linux --host=powerpc-linux --with-__cxa_atexit --with-as=/usr/local/powerpc-linux/bin/as --with-ld=/usr/local/powerpc-linux/bin/ld --enable-languages=c,c++ --enable-shared
>Description:
__builtin_constant_p expands to non-zero although the argument is not constant.
>How-To-Repeat:
$ cat builtin_constant_p.c
extern void __bad_udelay(void);
static void usb_hub_port_wait_reset(unsigned int delay)
{
int delay_time;
for (delay_time = 0; delay_time < 500; delay_time += delay) {
if (__builtin_constant_p(delay))
__bad_udelay();
}
}
$ gcc -S -O2 builtin_constant_p.c
$ grep __bad_udelay builtin_constant_p.s
bl __bad_udelay
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: