[Bug target/47381] [x32] internal compiler error: in gen_lowpart_general, at rtlhooks.c:59

2011-08-06 Thread hjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47381

--- Comment #7 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org 2011-08-06 
14:57:55 UTC ---
Author: hjl
Date: Sat Aug  6 14:57:52 2011
New Revision: 177514

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=177514
Log:
Add testcases for PR 47381.

2011-08-06  H.J. Lu  hongjiu...@intel.com

PR target/47381
* gcc.dg/pr47381-1.c: New.
* gcc.dg/pr47381-2.c: Likewise.
* gcc.target/i386/pr47381.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.dg/pr47381-1.c
trunk/gcc/testsuite/gcc.dg/pr47381-2.c
trunk/gcc/testsuite/gcc.target/i386/pr47381.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug target/47381] [x32] internal compiler error: in gen_lowpart_general, at rtlhooks.c:59

2011-07-29 Thread hjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47381

--- Comment #6 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org 2011-07-29 
16:00:45 UTC ---
Author: hjl
Date: Fri Jul 29 16:00:41 2011
New Revision: 176932

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176932
Log:
Rewrite x86 lea support for x32.

2011-07-26  Uros Bizjak  ubiz...@gmail.com
   H.J. Lu  hongjiu...@intel.com

PR target/47381
PR target/49832
PR target/49833
* config/i386/i386.md (i): Change SImode attribute to e.
(g): Change SImode attribute to rme.
(di): Change SImode attribute to nF.
(general_operand): Change SImode attribute to x86_64_general_operand.
(general_szext_operand): Change SImode attribute to
x86_64_szext_general_operand.
(immediate_operand): Change SImode attribute to
x86_64_immediate_operand.
(nonmemory_operand): Change SImode attribute to
x86_64_nonmemory_operand.
(*movdi_internal_rex64): Remove mode from pic_32bit_operand check.
(*movsi_internal): Ditto.  Use e constraint in alternative 2.
(*lea_1): Use SWI48 mode iterator.
(*lea_1_zext): New insn pattern.
(testsi_ccno_1): Use x86_64_nonmemory_operand predicate for operand 2.
(*btmode): Ditto.
(*addmode1): Use x86_64_general_operand predicate for operand 2.
Update operand constraints.
(addsi_1_zext): Ditto.
(*addmode2): Ditto.
(*addsi_3_zext): Ditto.
(*subsi_1_zext): Ditto.
(*subsi_2_zext): Ditto.
(*subsi_3_zext): Ditto.
(*addsi3_carry_zext): Ditto.
(*plusminus_insnsi3_zext_cc_overflow): Ditto.
(*mulsi3_1_zext): Ditto.
(*andsi_1): Ditto.
(*andsi_1_zext): Ditto.
(*andsi_2_zext): Ditto.
(*any_or:codesi_1_zext): Ditto.
(*any_or:codesi_2_zext): Ditto.
(*testmode_1): Use general_operand predicate for operand 1.
(*andmode_2): Ditto.
(movmodecc): Use  general_operand predicate for operands 1 and 2.
(add-lea splitter): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(add-lea zext splitter): Do not extend input operands to DImode.
(*lea_general_1): Handle only QImode and HImode operands.
(*lea_general_2): Ditto.
(*lea_general_3): Ditto.
(*lea_general_1_zext): Remove.
(*lea_general_2_zext): Ditto.
(*lea_general_3_zext): Ditto.
(*lea_general_4): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(ashift-lea splitter): Ditto.
* config/i386/i386.c (ix86_print_operand_address): Print address
registers with 'q' modifier on 64bit targets.
* config/i386/predicates.md (pic_32bit_opreand): Define as special
predicate.  Reject non-SI and non-DI modes.

Modified:
branches/x32/gcc/ChangeLog.x32
branches/x32/gcc/config/i386/i386.c
branches/x32/gcc/config/i386/i386.md
branches/x32/gcc/config/i386/predicates.md


[Bug target/47381] [x32] internal compiler error: in gen_lowpart_general, at rtlhooks.c:59

2011-07-26 Thread uros at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47381

--- Comment #4 from uros at gcc dot gnu.org 2011-07-26 12:00:36 UTC ---
Author: uros
Date: Tue Jul 26 12:00:33 2011
New Revision: 176788

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176788
Log:
PR target/47381
PR target/49832
PR target/49833
* config/i386/i386.md (i): Change SImode attribute to e.
(g): Change SImode attribute to rme.
(di): Change SImode attribute to nF.
(general_operand): Change SImode attribute to x86_64_general_operand.
(general_szext_operand): Change SImode attribute to
x86_64_szext_general_operand.
(immediate_operand): Change SImode attribute to
x86_64_immediate_operand.
(nonmemory_operand): Change SImode attribute to
x86_64_nonmemory_operand.
(*movdi_internal_rex64): Remove mode from pic_32bit_operand check.
(*movsi_internal): Ditto.  Use e constraint in alternative 2.
(*lea_1): Use SWI48 mode iterator.
(*lea_1_zext): New insn pattern.
(testsi_ccno_1): Use x86_64_nonmemory_operand predicate for operand 2.
(*btmode): Ditto.
(*addmode1): Use x86_64_general_operand predicate for operand 2.
Update operand constraints.
(addsi_1_zext): Ditto.
(*addmode2): Ditto.
(*addsi_3_zext): Ditto.
(*subsi_1_zext): Ditto.
(*subsi_2_zext): Ditto.
(*subsi_3_zext): Ditto.
(*addsi3_carry_zext): Ditto.
(*plusminus_insnsi3_zext_cc_overflow): Ditto.
(*mulsi3_1_zext): Ditto.
(*andsi_1): Ditto.
(*andsi_1_zext): Ditto.
(*andsi_2_zext): Ditto.
(*any_or:codesi_1_zext): Ditto.
(*any_or:codesi_2_zext): Ditto.
(*testmode_1): Use general_operand predicate for operand 1.
(*andmode_2): Ditto.
(movmodecc): Use  general_operand predicate for operands 1 and 2.
(add-lea splitter): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(add-lea zext splitter): Do not extend input operands to DImode.
(*lea_general_1): Handle only QImode and HImode operands.
(*lea_general_2): Ditto.
(*lea_general_3): Ditto.
(*lea_general_1_zext): Remove.
(*lea_general_2_zext): Ditto.
(*lea_general_3_zext): Ditto.
(*lea_general_4): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(ashift-lea splitter): Ditto.
* config/i386/i386.c (ix86_print_operand_address): Print address
registers with 'q' modifier on 64bit targets.
* config/i386/predicates.md (pic_32bit_opreand): Define as special
predicate.  Reject non-SI and non-DI modes.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/i386.md
trunk/gcc/config/i386/predicates.md


[Bug target/47381] [x32] internal compiler error: in gen_lowpart_general, at rtlhooks.c:59

2011-07-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47381

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Target||x32
 Status|UNCONFIRMED |RESOLVED
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2011-07/msg02249.htm
   ||l
 Resolution||FIXED
   Target Milestone|--- |4.7.0

--- Comment #5 from Uros Bizjak ubizjak at gmail dot com 2011-07-26 12:07:11 
UTC ---
Committed to trunk.


[Bug target/47381] [x32] internal compiler error: in gen_lowpart_general, at rtlhooks.c:59

2011-01-20 Thread hjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47381

--- Comment #1 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org 2011-01-20 
17:28:54 UTC ---
Author: hjl
Date: Thu Jan 20 17:28:49 2011
New Revision: 169059

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=169059
Log:
Fix LEA alternative in *addmode_1/*addsi_1_zext for x32.

gcc/

2011-01-20  H.J. Lu  hongjiu...@intel.com

PR target/47381
* config/i386/constraints.md (Yl): New.

* config/i386/i386.md (l): New.
(*addmode_1): Replace i with l.
(*addsi_1_zext): Replace lYe with lYl.

gcc/testsuite/

2011-01-20  H.J. Lu  hongjiu...@intel.com

PR target/47381
* gcc.target/i386/pr47381-1.c: New.
* gcc.target/i386/pr47381-2.c: Likewise.

Added:
branches/x32/gcc/testsuite/gcc.target/i386/pr47381-1.c
branches/x32/gcc/testsuite/gcc.target/i386/pr47381-2.c
Modified:
branches/x32/gcc/ChangeLog.x32
branches/x32/gcc/config/i386/constraints.md
branches/x32/gcc/config/i386/i386.md
branches/x32/gcc/testsuite/ChangeLog.x32


[Bug target/47381] [x32] internal compiler error: in gen_lowpart_general, at rtlhooks.c:59

2011-01-20 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47381

--- Comment #2 from H.J. Lu hjl.tools at gmail dot com 2011-01-20 18:59:10 
UTC ---
Another crash

[hjl@gnu-6 ilp32-13]$ cat x.i 
struct foo_t {
  int limit;
} foo[3];
void
bar () {
  int i;
  for (i = 0; i  3; i++) {
__builtin_memset (foo[i], 0, sizeof(*foo));
  }
}
[hjl@gnu-6 ilp32-13]$ /export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O2 -dp
-march=atom  x.i
x.i: In function ‘bar’:
x.i:10:1: internal compiler error: in gen_lowpart_general, at rtlhooks.c:59
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
[hjl@gnu-6 ilp32-13]$


[Bug target/47381] [x32] internal compiler error: in gen_lowpart_general, at rtlhooks.c:59

2011-01-20 Thread hjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47381

--- Comment #3 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org 2011-01-20 
19:06:05 UTC ---
Author: hjl
Date: Thu Jan 20 19:06:03 2011
New Revision: 169062

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=169062
Log:
Use x32_lea_nonmemory_operand on 64bit LEA split.

gcc/

2011-01-20  H.J. Lu  hongjiu...@intel.com

PR target/47381
* config/i386/i386.md (64bit LEA split): Replace nonmemory_operand
with x32_lea_nonmemory_operand.

gcc/testsuite/

2011-01-20  H.J. Lu  hongjiu...@intel.com

PR target/47381
* gcc.target/i386/pr47381-3.c: New.

Added:
branches/x32/gcc/testsuite/gcc.target/i386/pr47381-3.c
Modified:
branches/x32/gcc/ChangeLog.x32
branches/x32/gcc/config/i386/i386.md
branches/x32/gcc/testsuite/ChangeLog.x32