This looks similar to bug 19449, but with just __builtin_constant_p not
__builtin_choose_expr so I'm opening a new bug for this.
The following code works with 3.3.6, but with 3.4.4 it fails to resolve
__builtin_constant_p leading to link errors of unresolved symbols.
Code I'm seeing this in is linux 2.6.12 built for arm. The occurance gcc is
having problems with is alloc_skb()'s call to kmalloc(). That call is for a
non-constant variable (size) so __builtin_constant_p() should result in zero.
Problem is present with -O2, however -O1 is resolving __builtin_constant_p
correctly.
I'll attach full preprocessed output as well as compiled output.
Compile line is:
arm-linux-gcc -Wp,-MD,net/core/.skbuff.o.d -nostdinc -isystem
/net/gia/djohnson/tools/usr/local/starent/bintools/linux-arm/gcc/200510261510/lib/gcc/arm-linux/3.4.4/include
-D__KERNEL__ -Iinclude -mbig-endian -Wall -Wstrict-prototypes -Wno-trigraphs
-fno-strict-aliasing -fno-common -ffreestanding -O2 -fno-omit-frame-pointer
-g -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mapcs-32
-D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=xscale -Wa,-mcpu=xscale
-malignment-traps -msoft-float -Uarm -Wdeclaration-after-statement
-DKBUILD_BASENAME=skbuff -DKBUILD_MODNAME=skbuff -c -o net/core/.tmp_skbuff.o
net/core/skbuff.c
arm-linux-nm net/core/.tmp_skbuff.o |grep that_much
U __you_cannot_kmalloc_that_much
--
Summary: 3.4 regression: __builtin_constant_p not resolved with -
O2
Product: gcc
Version: 3.4.4
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: djohnson+gcc at sw dot starentnetworks dot com
GCC build triplet: i686-linux
GCC host triplet: i686-linux
GCC target triplet: arm-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24548