RE: patch to fix PR64110

2014-12-16 Thread Hale Wang
This issue is already fixed by your commit  r218760. 
Thanks.

Hale.

 -Original Message-
 From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
 ow...@gcc.gnu.org] On Behalf Of Hale Wang
 Sent: Tuesday, December 16, 2014 10:17 AM
 To: 'Vladimir Makarov'; GCC Patches
 Subject: RE: patch to fix PR64110
 
 Hi,
 
 This commit will cause another GCC build fail for ARM targets. The details are
 descripted in the following Bugzilla linker:
 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64323.
 
 Could you help me to have a look?
 Thanks,
 
 Hale.
 
  -Original Message-
  From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
  ow...@gcc.gnu.org] On Behalf Of Vladimir Makarov
  Sent: Saturday, December 13, 2014 4:12 AM
  To: GCC Patches
  Subject: patch to fix PR64110
 
  The following patch fixes
 
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110
 
  The patch was successfully tested and bootstrapped on x86/x86-64.
 
  Committed as rev. 218688.
 
  2014-12-12  Vladimir Makarov  vmaka...@redhat.com
 
   PR target/64110
   * lra-constraints.c (process_alt_operands): Refuse alternative
   when reload pseudo of given class can not hold value of given
   mode.
 
  2014-12-12  Vladimir Makarov  vmaka...@redhat.com
 
   PR target/64110
   * gcc.target/i386/pr64110.c: New.
 
 
 






Re: patch to fix PR64110

2014-12-15 Thread Christophe Lyon
Hi,

After this commit, GCC build fails for ARM targets:
--target=arm-none-eabi --with-mode=arm --with-cpu=cortex-a9 --with-fpu=neon

/obj-arm-none-eabi/gcc1/./gcc/xgcc -B/obj-arm-none-eabi/gcc1/./gcc/
-B/tools/arm-none-eabi/bin/ -B/tools/arm-none-eabi/lib/ -isystem
/tools/arm-none-eabi/include -isystem /tools/arm-none-eabi/sys-include
   -g -O2 -mfloat-abi=hard -O2  -g -O2 -DIN_GCC
-DCROSS_DIRECTORY_STRUCTURE  -W -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
-Wold-style-definition  -isystem ./include   -fno-inline -g
-DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc
-fno-inline -I. -I. -I../../.././gcc -I/trunk/libgcc -I/trunk/libgcc/.
-I/trunk/libgcc/../gcc -I/trunk/libgcc/../include  -DHAVE_CC_TLS  -o
_mulhelperDQ.o -MT _mulhelperDQ.o -MD -MP -MF _mulhelperDQ.dep
-DL_mulhelper -DDQ_MODE -c /trunk/libgcc/fixed-bit.c
-fvisibility=hidden -DHIDE_EXPORTS
/trunk/libgcc/fixed-bit.c: In function '__gnu_mulhelperdq':
/trunk/libgcc/fixed-bit.c:371:1: error: unable to generate reloads for:
 }
 ^
(insn 55 63 59 2 (set (reg:DI 124 [ D.7630 ])
(mult:DI (zero_extend:DI (subreg:SI (reg:DI 112 [ D.7628 ]) 4))
(zero_extend:DI (subreg:SI (reg:DI 111 [ D.7628 ]) 4
/trunk/libgcc/fixed-bit.c:307 54 {*umulsidi3_v6}
 (nil))
/trunk/libgcc/fixed-bit.c:371:1: internal compiler error: in
curr_insn_transform, at lra-constraints.c:3383
0x9d4875 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*)
/trunk/gcc/rtl-error.c:110
0x904ec4 curr_insn_transform
/trunk/gcc/lra-constraints.c:3383
0x9057ce lra_constraints(bool)
/trunk/gcc/lra-constraints.c:4324
0x8f5eb1 lra(_IO_FILE*)
/trunk/gcc/lra.c:2277
0x8b4959 do_reload
/trunk/gcc/ira.c:5391
0x8b4959 execute
/trunk/gcc/ira.c:5561
Please submit a full bug report,

Can you have a look?

Thanks,

Christophe.

On 12 December 2014 at 21:12, Vladimir Makarov vmaka...@redhat.com wrote:
 The following patch fixes

 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110

 The patch was successfully tested and bootstrapped on x86/x86-64.

 Committed as rev. 218688.

 2014-12-12  Vladimir Makarov  vmaka...@redhat.com

 PR target/64110
 * lra-constraints.c (process_alt_operands): Refuse alternative
 when reload pseudo of given class can not hold value of given
 mode.

 2014-12-12  Vladimir Makarov  vmaka...@redhat.com

 PR target/64110
 * gcc.target/i386/pr64110.c: New.



Re: patch to fix PR64110

2014-12-15 Thread Vladimir Makarov

On 2014-12-15 9:14 AM, Christophe Lyon wrote:

Hi,

After this commit, GCC build fails for ARM targets:
--target=arm-none-eabi --with-mode=arm --with-cpu=cortex-a9 --with-fpu=neon


full bug report,


Can you have a look?



Sure.  Sorry for inconvenience.  LRA/reload bug fixing is a complicated 
thing in most cases.





RE: patch to fix PR64110

2014-12-15 Thread Hale Wang
Hi,

This commit will cause another GCC build fail for ARM targets. The details are 
descripted in the following Bugzilla linker:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64323.

Could you help me to have a look?
Thanks,

Hale.

 -Original Message-
 From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
 ow...@gcc.gnu.org] On Behalf Of Vladimir Makarov
 Sent: Saturday, December 13, 2014 4:12 AM
 To: GCC Patches
 Subject: patch to fix PR64110
 
 The following patch fixes
 
 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110
 
 The patch was successfully tested and bootstrapped on x86/x86-64.
 
 Committed as rev. 218688.
 
 2014-12-12  Vladimir Makarov  vmaka...@redhat.com
 
  PR target/64110
  * lra-constraints.c (process_alt_operands): Refuse alternative
  when reload pseudo of given class can not hold value of given
  mode.
 
 2014-12-12  Vladimir Makarov  vmaka...@redhat.com
 
  PR target/64110
  * gcc.target/i386/pr64110.c: New.





patch to fix PR64110

2014-12-12 Thread Vladimir Makarov

The following patch fixes

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64110

The patch was successfully tested and bootstrapped on x86/x86-64.

Committed as rev. 218688.

2014-12-12  Vladimir Makarov  vmaka...@redhat.com

PR target/64110
* lra-constraints.c (process_alt_operands): Refuse alternative
when reload pseudo of given class can not hold value of given
mode.

2014-12-12  Vladimir Makarov  vmaka...@redhat.com

PR target/64110
* gcc.target/i386/pr64110.c: New.

Index: lra-constraints.c
===
--- lra-constraints.c   (revision 218685)
+++ lra-constraints.c   (working copy)
@@ -2267,6 +2267,29 @@ process_alt_operands (int only_alternati
  goto fail;
}
 
+ /* Alternative loses if it required class pseudo can not
+hold value of required mode.  Such insns can be
+described by insn definitions with mode iterators.
+Don't use ira_prohibited_class_mode_regs here as it
+is common practice for constraints to use a class
+which does not have actually enough regs to hold the
+value (e.g. x86 AREG for mode requiring more one
+general reg).  */
+ if (GET_MODE (*curr_id-operand_loc[nop]) != VOIDmode
+  ! hard_reg_set_empty_p (this_alternative_set)
+  ! HARD_REGNO_MODE_OK (ira_class_hard_regs
+  [this_alternative][0],
+  GET_MODE 
(*curr_id-operand_loc[nop])))
+   {
+ if (lra_dump_file != NULL)
+   fprintf
+ (lra_dump_file,
+  alt=%d: reload pseudo for op %d 
+   can not hold the mode value -- refuse\n,
+  nalt, nop);
+ goto fail;
+   }
+
  /* Check strong discouragement of reload of non-constant
 into class THIS_ALTERNATIVE.  */
  if (! CONSTANT_P (op)  ! no_regs_p
Index: testsuite/gcc.target/i386/pr64110.c
===
--- testsuite/gcc.target/i386/pr64110.c (revision 0)
+++ testsuite/gcc.target/i386/pr64110.c (working copy)
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options -O3 -march=core-avx2 } */
+
+int foo (void);
+int a;
+short *b;
+
+void
+bar (short x)
+{
+  while (a--)
+{
+  int i, j = foo ();
+  for (i = 0; i  j; ++i)
+   *b++ = x;
+}
+}