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 >