[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #12 from Jeffrey A. Law law at redhat dot com --- Dave, The updated patch looks good. Please post it to gcc-patches for archival purposes with a note that I approved it in BZ before installing the patch. Thanks, jeff
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #13 from John David Anglin danglin at gcc dot gnu.org --- Author: danglin Date: Fri Apr 4 22:25:51 2014 New Revision: 209134 URL: http://gcc.gnu.org/viewcvs?rev=209134root=gccview=rev Log: PR rtl-optimization/60155 * gcse.c (record_set_data): New function. (single_set_gcse): New function. (gcse_emit_move_after): Use single_set_gcse instead of single_set. (hoist_code): Likewise. (get_pressure_class_and_nregs): Likewise. Modified: trunk/gcc/ChangeLog trunk/gcc/gcse.c
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 John David Anglin danglin at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED --- Comment #14 from John David Anglin danglin at gcc dot gnu.org --- Fixed on trunk.
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #11 from dave.anglin at bell dot net --- On 3-Mar-14, at 8:01 PM, danglin at gcc dot gnu.org wrote: Bah, doesn't fix bug: Attached new patch which seems to fix bug. Testing. -- John David Anglindave.ang...@bell.net
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #10 from John David Anglin danglin at gcc dot gnu.org --- Bah, doesn't fix bug: dave@mx3210:~/gnu/gcc/objdir$ gcc/xgcc -Bgcc/ -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -D_FORTIFY_SOURCE=2 -g -O2 -Wformat -Werror=format-security -fpreprocessed ../ssh-keygen.i ../ssh-keygen.c: In function ‘do_fingerprint’: ../ssh-keygen.c:887:1: internal compiler error: in hoist_code, at gcse.c:3378 0x5bf083 hoist_code ../../gcc/gcc/gcse.c:3378 0x5c00bf one_code_hoisting_pass ../../gcc/gcc/gcse.c:3651 0x5c15f3 execute_rtl_hoist ../../gcc/gcc/gcse.c:4171 0x5c17ef execute ../../gcc/gcc/gcse.c:4244
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #9 from dave.anglin at bell dot net --- Something like this? -- John David Anglindave.ang...@bell.net
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #7 from dave.anglin at bell dot net --- On 25-Feb-14, at 1:36 AM, law at redhat dot com wrote: It really feels like this is papering over the real problem, namely that get_pressure_class_and_nregs simply doesn't handle things that are passed through hash_scan_set, in particular cases where there's a single set inside a PARALLEL. Could we use something like single_set_for_csa, but also check for TRAP_IF? Dave -- John David Anglindave.ang...@bell.net
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #8 from Jeffrey A. Law law at redhat dot com --- Rather than special case TRAP_IF, I think we just need to walk through the pattern. If we find no assignments or 1 assignment, then we assert. note_stores, or walking similar to hash_scan_insn where we keep track of whether or not we've seen a set should be sufficient, I'd think.
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 Jeffrey A. Law law at redhat dot com changed: What|Removed |Added CC||law at redhat dot com --- Comment #6 from Jeffrey A. Law law at redhat dot com --- Well, given that gcse merely moves evaluations to other blocks where evaluation of the expression is always anticipated, there's no inherent reason why we can't gcse something that might trap. It really feels like this is papering over the real problem, namely that get_pressure_class_and_nregs simply doesn't handle things that are passed through hash_scan_set, in particular cases where there's a single set inside a PARALLEL.
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 John David Anglin danglin at gcc dot gnu.org changed: What|Removed |Added CC||mikulas at artax dot karlin.mff.cu ||ni.cz --- Comment #5 from John David Anglin danglin at gcc dot gnu.org --- *** Bug 54737 has been marked as a duplicate of this bug. ***
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #4 from John David Anglin danglin at gcc dot gnu.org --- Created attachment 32140 -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32140action=edit Patch The attach patch fixes the ICE but maybe we should always check if the INSN might trap. Also, what about floating point exceptions?
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #1 from John David Anglin danglin at gcc dot gnu.org --- With 4.6 and 4.7 compilers, this appears as: gcc-4.6 -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wno-pointer-sign -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -D_FORTIFY_SOURCE=2 -g -O2 -Wformat -Werror=format-security -DLOGIN_PROGRAM=\/bin/login\ -DLOGIN_NO_ENDOPT -DSSH_EXTRAVERSION=\Debian-2\ -I. -I.. -I/usr/include/editline -DSSHDIR=\/etc/ssh\ -D_PATH_SSH_PROGRAM=\/usr/bin/ssh\ -D_PATH_SSH_ASKPASS_DEFAULT=\/usr/bin/ssh-askpass\ -D_PATH_SFTP_SERVER=\/usr/lib/openssh/sftp-server\ -D_PATH_SSH_KEY_SIGN=\/usr/lib/openssh/ssh-keysign\ -D_PATH_SSH_PKCS11_HELPER=\/usr/lib/openssh/ssh-pkcs11-helper\ -D_PATH_SSH_PIDDIR=\/var/run\ -D_PATH_PRIVSEP_CHROOT_DIR=\/var/run/sshd\ -DHAVE_CONFIG_H -c ../ssh-keygen.c ../ssh-keygen.c: In function ‘do_fingerprint’: ../ssh-keygen.c:887:1: internal compiler error: in hoist_code, at gcse.c:4631
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #2 from John David Anglin danglin at gcc dot gnu.org --- Breakpoint 1, get_pressure_class_and_nregs (insn=0xfab51d98, nregs=0xfaf028c0) at ../../gcc/gcc/gcse.c:3459 3459 gcc_assert (set != NULL_RTX); (gdb) p debug_rtx (insn) (insn 212 211 213 18 (parallel [ (set (reg/v:SI 114 [ num ]) (plus:SI (reg/v:SI 114 [ num ]) (const_int 1 [0x1]))) (trap_if (ne (plus:DI (sign_extend:DI (reg/v:SI 114 [ num ])) (sign_extend:DI (const_int 1 [0x1]))) (sign_extend:DI (plus:SI (reg/v:SI 114 [ num ]) (const_int 1 [0x1] (const_int 0 [0])) ]) ../ssh-keygen.c:830 113 {addvsi3} (nil)) $1 = void
[Bug rtl-optimization/60155] ICE: in get_pressure_class_and_nregs at gcse.c:3438
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 --- Comment #3 from John David Anglin danglin at gcc dot gnu.org --- Function compiles without -ftrapv.