[OE-core] [bugfix 1/2] gcc-4.6.0: fix ICE with armv7 target

Khem Raj raj.khem at gmail.com
Sat May 28 17:28:40 UTC 2011


On 5/27/2011 12:41 PM, Mark Hatle wrote:
> On 5/27/11 2:36 PM, Khem Raj wrote:
>> On Fri, May 27, 2011 at 12:15 PM, Mark Hatle<mark.hatle at windriver.com>  wrote:
>>> On 5/27/11 1:25 PM, Khem Raj wrote:
>>>> On Fri, May 27, 2011 at 11:15 AM,<nitin.a.kamble at intel.com>  wrote:
>>>>> From: Nitin A Kamble<nitin.a.kamble at intel.com>
>>>>>
>>>>> This fixes an internal compiler error for gcc 4.6.0 for armv7
>>>>>
>>>>> Patch came from: Phil Blundell<pb at pbcl.net>
>>>>> Validated by Nitin
>>>>>
>>>>> Signed-off-by: Nitin A Kamble<nitin.a.kamble at intel.com>
>>>>> Signed-Off-by: Phil Blundell<pb at pbcl.net>
>>>>> ---
>>>>>   meta/recipes-devtools/gcc/gcc-4.6.0.inc            |    3 +-
>>>>>   .../gcc/gcc-4.6.0/ICE_fix_for_arm.patch            |   44 ++++++++++++++++++++
>>>>>   2 files changed, 46 insertions(+), 1 deletions(-)
>>>>>   create mode 100644 meta/recipes-devtools/gcc/gcc-4.6.0/ICE_fix_for_arm.patch
>>>>>
>>>>> diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0.inc b/meta/recipes-devtools/gcc/gcc-4.6.0.inc
>>>>> index fb5c70d..4407eca 100644
>>>>> --- a/meta/recipes-devtools/gcc/gcc-4.6.0.inc
>>>>> +++ b/meta/recipes-devtools/gcc/gcc-4.6.0.inc
>>>>> @@ -7,7 +7,7 @@ require gcc-common.inc
>>>>>
>>>>>   require gcc-4_6-branch-backports.inc
>>>>>
>>>>> -PR = "r2"
>>>>> +PR = "r3"
>>>>>
>>>>>   DEPENDS =+ "mpfr gmp libmpc"
>>>>>   NATIVEDEPS = "mpfr-native gmp-native gettext-native libmpc-native"
>>>>> @@ -53,6 +53,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
>>>>>            file://gcc-poison-parameters.patch \
>>>>>            file://GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch \
>>>>>            file://COLLECT_GCC_OPTIONS.patch \
>>>>> +          file://ICE_fix_for_arm.patch \
>>>>>           "
>>>>>   SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch;patch=1 "
>>>>>
>>>>> diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/ICE_fix_for_arm.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/ICE_fix_for_arm.patch
>>>>> new file mode 100644
>>>>> index 0000000..037a180
>>>>> --- /dev/null
>>>>> +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/ICE_fix_for_arm.patch
>>>>> @@ -0,0 +1,44 @@
>>>>> +Upstream-Status: Pending
>>>>> +
>>>>> +Patch came from: Phil Blundell<pb at pbcl.net>
>>>>> +Validated by Nitin
>>>>> +This fixes the following internal compiler error of gcc 4.6.0 on for armv7-a
>>>>> +related gcc bugzilla: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47719
>>>>> +
>>>>> +
>>>>> +| arm-poky-linux-gnueabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon
>>>>> +-mfloat-abi=softfp -fno-tree-vectorize
>>>>> +--sysroot=/srv/home/pokybuild/poky-slave/nightly-external/build/build/tmp/sysroots/beagleboard
>>>>> +-c -I. -I../../../../src/gallium/include -I../../../../src/gallium/auxiliary
>>>>> +-I../../../../src/gallium/drivers
>>>>> +-I../../../../src/gallium/drivers/svga/include -O2 -pipe -g
>>>>> +-feliminate-unused-debug-types -Wall -Wmissing-prototypes -std=c99 -ffast-math
>>>>> +-fvisibility=hidden -fno-strict-aliasing -fPIC -D_GNU_SOURCE -DPTHREADS
>>>>> +-DHAVE_POSIX_MEMALIGN -DUSE_XSHM -std=gnu99 -fvisibility=hidden -DHAVE_STDINT_H
>>>>> +-DHAVE_SYS_TYPES_H svga_resource_buffer_upload.c -o
>>>>> +svga_resource_buffer_upload.o
>>>>> +| svga_tgsi_insn.c: In function 'svga_shader_emit_instructions':
>>>>> +| svga_tgsi_insn.c:2969:1: internal compiler error: in push_minipool_fix, at
>>>>> +config/arm/arm.c:12084
>>>>> +| Please submit a full bug report,
>>>>> +| with preprocessed source if appropriate.
>>>>> +| See<http://gcc.gnu.org/bugs.html>  for instructions.
>>>>> +| make[4]: *** [svga_tgsi_insn.o] Error 1
>>>>> +
>>>>> +Nitin A Kamble<nitin.a.kamble at intel.com>  2011/05/27
>>>>> +
>>>>> +Index: gcc-4.6.0/gcc/config/arm/arm.md
>>>>> +===================================================================
>>>>> +--- gcc-4.6.0.orig/gcc/config/arm/arm.md
>>>>> ++++ gcc-4.6.0/gcc/config/arm/arm.md
>>>>> +@@ -4213,7 +4213,9 @@
>>>>> +    uxth%?\\t%0, %1
>>>>> +    ldr%(h%)\\t%0, %1"
>>>>> +   [(set_attr "type" "alu_shift,load_byte")
>>>>> +-   (set_attr "predicable" "yes")]
>>>>> ++   (set_attr "predicable" "yes")
>>>>> ++   (set_attr "pool_range" "*,256")
>>>>> ++   (set_attr "neg_pool_range" "*,244")]
>>>>> + )
>>>>> +
>>>>
>>>> FWIW a patch which is similar to this was rejected here.
>>>> http://gcc.gnu.org/ml/gcc-patches/2011-02/msg01731.html
>>>>
>>>
>>> based on that link, I'd say there are two cases that are needed for a proper
>>> workaround.
>>>
>>> Then likely we wait until upstream has a fix....
>>
>> working around package is better than working around gcc IMHO
>
> Problem is the ICE will still be there.  If we put the workaround in gcc, then
> the package will work with different versions of gcc (without modification), and
> other packages will not experience this ICE.
>
> (This of course is assuming the gcc workaround is reasonable and not introducing
> other faults.)

we should qualify and run regression tests IMO to validate it if we 
intend patch gcc. I think fixing the given recipe is path of least impact




More information about the Openembedded-core mailing list