This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

middle-end/10011: Broken __builtin_constant_p


>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:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]