This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch][google/main] Fix arm build broken
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: "HÃn ShÄn (ææ)" <shenhan at google dot com>
- Cc: Dehao Chen <dehao at google dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, c-compiler-chrome <c-compiler-chrome at google dot com>
- Date: Thu, 13 Mar 2014 10:07:06 +0000
- Subject: Re: [Patch][google/main] Fix arm build broken
- Authentication-results: sourceware.org; auth=none
- References: <CACkGtrjF9qv+PY=9q73_4NK6Nc7S4DKcdmJ60wDJONZskYfu2g at mail dot gmail dot com>
On 12/03/14 22:35, HÃn ShÄn (ææ) wrote:
> ARM build (on chrome) is broken because of duplicate entries in arm.md
> and unspecs.md. Fixed by removing duplication and merge those in
> arm.md into unspecs.md.
>
> (We had a similar fix for google/gcc-4_8 here -
> http://gcc.gnu.org/viewcvs/gcc?view=revision&revision=198650)
>
> Tested by building arm cross compiler successfully.
>
> Ok for google/main?
>
Sounds to me like a merge botch. UNSPEC_SIN and UNSPEC_COS were removed
from trunk some time back, when the old FPA code was removed. I very
much doubt that you need to be re-adding them.
R.
> Patch below -
>
> diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
> index 8b269a4..9aec213 100644
> --- a/gcc/config/arm/arm.md
> +++ b/gcc/config/arm/arm.md
> @@ -75,27 +75,6 @@
> ]
> )
>
> -;; UNSPEC Usage:
> -;; Note: sin and cos are no-longer used.
> -;; Unspec enumerators for Neon are defined in neon.md.
> -
> -(define_c_enum "unspec" [
> - UNSPEC_SIN ; `sin' operation (MODE_FLOAT):
> - ; operand 0 is the result,
> - ; operand 1 the parameter.
> - UNPSEC_COS ; `cos' operation (MODE_FLOAT):
> - ; operand 0 is the result,
> - ; operand 1 the parameter.
> - UNSPEC_PROLOGUE_USE ; As USE insns are not meaningful after reload,
> - ; this unspec is used to prevent the deletion of
> - ; instructions setting registers for EH handling
> - ; and stack frame generation. Operand 0 is the
> - ; register to "use".
> - UNSPEC_WMADDS ; Used by the intrinsic form of the iWMMXt
> WMADDS instruction.
> - UNSPEC_WMADDU ; Used by the intrinsic form of the iWMMXt
> WMADDU instruction.
> - UNSPEC_GOT_PREL_SYM ; Specify an R_ARM_GOT_PREL relocation of a symbol.
> -])
> -
> ;; UNSPEC_VOLATILE Usage:
>
>
> diff --git a/gcc/config/arm/unspecs.md b/gcc/config/arm/unspecs.md
> index 8caa953..89bc528 100644
> --- a/gcc/config/arm/unspecs.md
> +++ b/gcc/config/arm/unspecs.md
> @@ -24,6 +24,12 @@
> ;; Unspec enumerators for iwmmxt2 are defined in iwmmxt2.md
>
> (define_c_enum "unspec" [
> + UNSPEC_SIN ; `sin' operation (MODE_FLOAT):
> + ; operand 0 is the result,
> + ; operand 1 the parameter.
> + UNPSEC_COS ; `cos' operation (MODE_FLOAT):
> + ; operand 0 is the result,
> + ; operand 1 the parameter.
> UNSPEC_PUSH_MULT ; `push multiple' operation:
> ; operand 0 is the first register,
> ; subsequent registers are in parallel (use ...)
> @@ -58,6 +64,7 @@
> ; instruction stream.
> UNSPEC_PIC_OFFSET ; A symbolic 12-bit OFFSET that has been treated
> ; correctly for PIC usage.
> + UNSPEC_GOT_PREL_SYM ; Specify an R_ARM_GOT_PREL relocation of a symbol.
> UNSPEC_GOTSYM_OFF ; The offset of the start of the GOT from a
> ; a given symbolic address.
> UNSPEC_THUMB1_CASESI ; A Thumb1 compressed dispatch-table call.
> @@ -70,6 +77,11 @@
> ; that.
> UNSPEC_UNALIGNED_STORE ; Same for str/strh.
> UNSPEC_PIC_UNIFIED ; Create a common pic addressing form.
> + UNSPEC_PROLOGUE_USE ; As USE insns are not meaningful after reload,
> + ; this unspec is used to prevent the deletion of
> + ; instructions setting registers for EH handling
> + ; and stack frame generation. Operand 0 is the
> + ; register to "use".
> UNSPEC_LL ; Represent an unpaired load-register-exclusive.
> UNSPEC_VRINTZ ; Represent a float to integral float rounding
> ; towards zero.
> @@ -87,6 +99,8 @@
>
> (define_c_enum "unspec" [
> UNSPEC_WADDC ; Used by the intrinsic form of the iWMMXt WADDC instruction.
> + UNSPEC_WMADDS ; Used by the intrinsic form of the iWMMXt
> WMADDS instruction.
> + UNSPEC_WMADDU ; Used by the intrinsic form of the iWMMXt
> WMADDU instruction.
> UNSPEC_WABS ; Used by the intrinsic form of the iWMMXt WABS instruction.
> UNSPEC_WQMULWMR ; Used by the intrinsic form of the iWMMXt WQMULWMR
> instruction.
> UNSPEC_WQMULMR ; Used by the intrinsic form of the iWMMXt WQMULMR
> instruction.
>
>
>
>
> Han
>