[Bug tree-optimization/53645] Missed optimization for vector integer division lowering

2012-07-01 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53645

--- Comment #10 from Jakub Jelinek  2012-07-02 
06:56:28 UTC ---
Author: jakub
Date: Mon Jul  2 06:56:24 2012
New Revision: 189108

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=189108
Log:
PR tree-optimization/53645
* tree-vect-generic.c (expand_vector_divmod): Use TYPE_MODE (type)
instead of TYPE_MODE (wider_type) as can_vec_perm_p argument.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-vect-generic.c


[Bug c++/53829] New: Trivial static initializers are created for initialization with result of trivial static inline functions

2012-07-01 Thread mh+gcc at glandium dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53829

 Bug #: 53829
   Summary: Trivial static initializers are created for
initialization with result of trivial static inline
functions
Classification: Unclassified
   Product: gcc
   Version: 4.7.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: mh+...@glandium.org


The most trivial example of the behaviour is this:

#include 
static inline uint64_t foo() { return 42; }
uint64_t f = foo();

G++ generates the following:
.file"test.cc"
.section.text.startup,"ax",@progbits
.p2align 4,,15
.type_GLOBAL__sub_I_f, @function
_GLOBAL__sub_I_f:
.LFB2:
.cfi_startproc
movq$42, f(%rip)
ret
.cfi_endproc
.LFE2:
.size_GLOBAL__sub_I_f, .-_GLOBAL__sub_I_f
.section.init_array,"aw"
.align 8
.quad_GLOBAL__sub_I_f
.globlf
.bss
.align 8
.typef, @object
.sizef, 8
f:
.zero8
.ident"GCC: (Debian 4.7.1-2) 4.7.1"
.section.note.GNU-stack,"",@progbits

For reference, clang++ generates the following:

.file"test.cc"
.typef,@object   # @f
.data
.globlf
.align8
f:
.quad42  # 0x2a
.sizef, 8


.section".note.GNU-stack","",@progbits

There are cases where g++ is able to generate code like clang++, but I can't
find one just now.


[Bug bootstrap/53828] New: Missing auto-target.h to compile cpuinfo.c

2012-07-01 Thread mikael at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53828

 Bug #: 53828
   Summary: Missing auto-target.h to compile cpuinfo.c
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: mik...@gcc.gnu.org
  Host: x86_64-unknown-freebsd9.0
Target: x86_64-unknown-freebsd9.0
 Build: x86_64-unknown-freebsd9.0


Hello, 

I had the following error compiling cpuinfo.c:

/home/mik/gcc4x/src/libgcc/config/i386/cpuinfo.c:23:25: fatal error:
auto-target.h: No such file or directory
 #include "auto-target.h"
 ^
compilation terminated.
gmake[3]: *** [cpuinfo.o] Erreur 1
gmake[3] : on quitte le répertoire «
/usr/home/mik/gcc4x/build/x86_64-unknown-freebsd9.0/libgcc »
gmake[2]: *** [all-stage3-target-libgcc] Erreur 2
gmake[2] : on quitte le répertoire « /usr/home/mik/gcc4x/build »
gmake[1]: *** [stage3-bubble] Erreur 2
gmake[1] : on quitte le répertoire « /usr/home/mik/gcc4x/build »
gmake: *** [all] Erreur 2



The compilation of libgcc's cpuinfo.c continued with the following change:

Index: libgcc/config/i386/t-cpuinfo
===
--- libgcc/config/i386/t-cpuinfo(révision 189101)
+++ libgcc/config/i386/t-cpuinfo(copie de travail)
@@ -1 +1,2 @@
 LIB2ADD += $(srcdir)/config/i386/cpuinfo.c
+$(srcdir)/config/i386/cpuinfo.c: auto-target.h



Here is my configure line:

home/mik/gcc4x/src/configure --disable-multilib --enable-maintainer-mode 
--disable-libstdcxx-pch --enable-languages=fortran


[Bug rtl-optimization/53827] [alpha]: Invalid insn scheduling in sched1 pass

2012-07-01 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53827

Uros Bizjak  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-07-01
 CC||aoliva at gcc dot gnu.org
 Ever Confirmed|0   |1

--- Comment #1 from Uros Bizjak  2012-07-01 17:16:21 
UTC ---
The problem is in memrefs_conflict_p in alias.c:

Calling this function with:

xsize = 8

x:
(and:DI (plus:DI (reg/f:DI 71)
(const_int 8 [0x8]))
(const_int -8 [0xfff8]))

ysize = 1

y:
(plus:DI (reg/f:DI 71)
(const_int 15 [0xf]))

c = 0

returns 0, implying that these references don't conflict. Fail.

Suspected commit:

2012-06-21  Alexandre Oliva  

PR debug/53671
PR debug/49888
* alias.c (memrefs_conflict_p): Improve handling of AND for alignment.


[Bug fortran/53824] ICE with ALLOCATE of coarrays

2012-07-01 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53824

Thomas Koenig  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-07-01
 Ever Confirmed|0   |1

--- Comment #1 from Thomas Koenig  2012-07-01 
16:28:49 UTC ---
This looks straightforward and fixes the ICE:

Index: resolve.c
===
--- resolve.c   (Revision 188916)
+++ resolve.c   (Arbeitskopie)
@@ -7325,8 +7325,8 @@ resolve_allocate_deallocate (gfc_code *code, const
  }
 }

-  /* Check that an allocate-object appears only once in the statement.  
- FIXME: Checking derived types is disabled.  */
+  /* Check that an allocate-object appears only once in the statement.  */
+
   for (p = code->ext.alloc.list; p; p = p->next)
 {
   pe = p->expr;
@@ -7376,9 +7376,10 @@ resolve_allocate_deallocate (gfc_code *code, const
{
  gfc_array_ref *par = &(pr->u.ar);
  gfc_array_ref *qar = &(qr->u.ar);
- if (gfc_dep_compare_expr (par->start[0],
-   qar->start[0]) != 0)
- break;
+ if ((par->start[0] != NULL || qar->start[0] != NULL)
+ && gfc_dep_compare_expr (par->start[0],
+  qar->start[0]) != 0)
+   break;
}
}
  else


[Bug target/53811] ICE: in insn_default_length, at config/i386/i386.md:529 (unrecognizable insn) with -mcmodel=large

2012-07-01 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53811

Uros Bizjak  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-07-01
 AssignedTo|unassigned at gcc dot   |ubizjak at gmail dot com
   |gnu.org |
   Target Milestone|--- |4.7.2
 Ever Confirmed|0   |1

--- Comment #2 from Uros Bizjak  2012-07-01 15:40:04 
UTC ---
Can you please test following patch:

--cut here--
Index: config/i386/i386.c
===
--- config/i386/i386.c  (revision 189101)
+++ config/i386/i386.c  (working copy)
@@ -33056,6 +33056,13 @@ x86_output_mi_thunk (FILE *file,
 emit_jump_insn (gen_indirect_jump (fnaddr));
   else
 {
+  if (!sibcall_insn_operand (fnaddr, Pmode))
+   {
+ tmp = gen_rtx_REG (Pmode, R10_REG);
+ emit_move_insn (tmp, fnaddr);
+ fnaddr = tmp;
+   }
+
   tmp = gen_rtx_MEM (QImode, fnaddr);
   tmp = gen_rtx_CALL (VOIDmode, tmp, const0_rtx);
   tmp = emit_call_insn (tmp);
--cut here--


[Bug target/53447] missed optimization of 64bit ALU operation with small constant

2012-07-01 Thread carrot at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53447

--- Comment #3 from carrot at gcc dot gnu.org 2012-07-01 15:14:56 UTC ---
Author: carrot
Date: Sun Jul  1 15:14:52 2012
New Revision: 189102

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=189102
Log:
PR target/53447
* config/arm/arm-protos.h (const_ok_for_dimode_op): New prototype.
* config/arm/arm.c (const_ok_for_dimode_op): New function.
* config/arm/constraints.md (Dd): New constraint.
* config/arm/predicates.md (arm_adddi_operand): New predicate.
* config/arm/arm.md (adddi3): Extend it to handle constants.
(arm_adddi3): Likewise.
(addsi3_carryin_): Extend it to handle sbc case.
(addsi3_carryin_alt2_): Likewise.
* config/arm/neon.md (adddi3_neon): Extend it to handle constants.

* gcc.target/arm/pr53447-1.c: New testcase.
* gcc.target/arm/pr53447-2.c: New testcase.
* gcc.target/arm/pr53447-3.c: New testcase.
* gcc.target/arm/pr53447-4.c: New testcase.


Added:
trunk/gcc/testsuite/gcc.target/arm/pr53447-1.c
trunk/gcc/testsuite/gcc.target/arm/pr53447-2.c
trunk/gcc/testsuite/gcc.target/arm/pr53447-3.c
trunk/gcc/testsuite/gcc.target/arm/pr53447-4.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/arm/arm-protos.h
trunk/gcc/config/arm/arm.c
trunk/gcc/config/arm/arm.md
trunk/gcc/config/arm/constraints.md
trunk/gcc/config/arm/neon.md
trunk/gcc/config/arm/predicates.md
trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/53827] New: [alpha]: Invalid insn scheduling in sched1 pass

2012-07-01 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53827

 Bug #: 53827
   Summary: [alpha]: Invalid insn scheduling in sched1 pass
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: ubiz...@gmail.com


Following testcase exposes a bug in sched1 pass:

--cut here--
#ifndef MAX_OFFSET
#define MAX_OFFSET (sizeof (long long))
#endif

#ifndef MAX_COPY
#define MAX_COPY 15
#endif

#ifndef MAX_EXTRA
#define MAX_EXTRA (sizeof (long long))
#endif

#define MAX_LENGTH (MAX_OFFSET + MAX_COPY + MAX_EXTRA)

static union {
  char buf[MAX_LENGTH];
  long long align_int;
  long double align_fp;
} u;

void reset (void);
void check (int off, int len, int ch);

int test ()
{
  int off;
  char *p;

  reset ();

  p = memset (u.buf + 1, '\0', 15);
  check (1, 15, '\0');

  return 0;
}
--cut here--

This bug can be triggered with a crosscompiler from x86_64-pc-linux-gnu to
alpha-linux-gnu target.

~/gcc-build-alpha/gcc/cc1 -O2 -mcpu=ev6

test:
.frame $30,16,$26,0
.mask 0x400,-16
ldgp $29,0($27)  # 39   *prologue_ldgp_1[length = 4]
$test..ng:
lda $30,-16($30) # 41   *adddi_internal/2   [length = 4]
stq $26,0($30)   # 42   *movdi/9[length = 4]
.prologue 1
jsr $26,reset# 5*call_osf_1/3   [length = 16]
ldgp $29,0($26)
lda $1,u # 6*movdi/7[length = 4]
lda $16,1($31)   # 22   *movdi/2[length = 4]
lda $17,15($31)  # 23   *movdi/2[length = 4]
mov $31,$18  # 24   *movdi/1[length = 4]
ldq_u $3,8($1)   # 7*movdi/8[length = 4]
ldq_u $2,1($1)   # 8*movdi/8[length = 4]
lda $4,1($1) # 9*adddi_internal/2   [length = 4]
>>> stb $31,15($1)   # 20   *movqi/4[length = 4]
mskqh $3,$4,$3   # 10   mskxh   [length = 4]
mskql $2,$4,$2   # 11   mskxl   [length = 4]
>>> stq_u $3,8($1)   # 12   *movdi/9[length = 4]
stq_u $2,1($1)   # 13   *movdi/9[length = 4]
stb $31,9($1)# 14   *movqi/4[length = 4]
stb $31,10($1)   # 15   *movqi/4[length = 4]
stb $31,11($1)   # 16   *movqi/4[length = 4]
stb $31,12($1)   # 17   *movqi/4[length = 4]
stb $31,13($1)   # 18   *movqi/4[length = 4]
stb $31,14($1)   # 19   *movqi/4[length = 4]
jsr $26,check# 25   *call_osf_1/3   [length = 16]
ldgp $29,0($26)
ldq $26,0($30)   # 45   *movdi/8[length = 4]
mov $31,$0   # 30   *movdi/1[length = 4]
lda $30,16($30)  # 47   *adddi_internal/2   [length = 4]
ret $31,($26),1  # 48   *return_internal[length = 4]
.end test

(insn 20) has been moved above (insn 12) in sched1 pass, although (insn 12)
stores DImode value to $1+8.

For reference, (insn 12) is defined as:

(insn 12 11 13 2 (set (mem/c:DI (and:DI (plus:DI (reg/f:DI 71)
(const_int 8 [0x8]))
(const_int -8 [0xfff8])) [0 S8 A64])
(reg:DI 73)) t.c:31 225 {*movdi}
 (expr_list:REG_DEAD (reg:DI 73)
(nil)))

and (insn 20):

(insn 20 9 10 2 (set (mem/c:QI (plus:DI (reg/f:DI 71)
(const_int 15 [0xf])) [0 MEM[(void *)&u + 1B]+14 S1 A8])
(const_int 0 [0])) t.c:31 228 {*movqi}
 (expr_list:REG_DEAD (reg/f:DI 71)
(nil)))

This is the only failure in gcc.c-torture/execute/memset-2.c execution failure
(and probably also in gcc.c-torture/execute/builtins/memset-chk.c execution
failure) [1]. It looks like off-by-one somewhere in the sched1 pass to me,
please note that other insns with offsets less than 15 are not moved.

[1] http://gcc.gnu.org/ml/gcc-testresults/2012-07/msg00017.html


[Bug rtl-optimization/53706] [4.8 Regression] Bootstrap failure due to "Invalid write of size 8 at 0xBDC35E: variable_htab_free (var-tracking.c:1418)

2012-07-01 Thread dcb314 at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53706

dcb  changed:

   What|Removed |Added

 CC||dcb314 at hotmail dot com

--- Comment #24 from dcb  2012-07-01 10:58:15 UTC ---
*** Bug 53809 has been marked as a duplicate of this bug. ***


[Bug c++/53809] ice then Abort

2012-07-01 Thread dcb314 at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53809

dcb  changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution||DUPLICATE

--- Comment #3 from dcb  2012-07-01 10:58:15 UTC ---
(In reply to comment #2)
> This may be a dup of PR 53706.  Please try revision 189037 or newer.

Yes, duplicate.

*** This bug has been marked as a duplicate of bug 53706 ***


[Bug tree-optimization/53645] Missed optimization for vector integer division lowering

2012-07-01 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53645

Uros Bizjak  changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 CC||ubizjak at gmail dot com
 Resolution|FIXED   |

--- Comment #9 from Uros Bizjak  2012-07-01 10:23:58 
UTC ---
Compilation of pr53645.c testcase ICEs with -mno-sse4:

[uros@localhost execute]$ ~/gcc-build/gcc/cc1 -O2 -mno-sse4 -quiet pr53645.c
pr53645.c: In function ‘uq’:
pr53645.c:11:11: internal compiler error: in expand_expr_real_2, at expr.c:8971
   *x = *y / ((UV) { a, b, c, d }); \
   ^
pr53645.c:35:1: note: in expansion of macro 'TEST'
 TEST (3, 3, 3, 3)   \
 ^
pr53645.c:40:1: note: in expansion of macro 'TESTS'
 TESTS
 ^
Please submit a full bug report,


(gdb) f 2
#2  0x006bf18d in expand_expr_real_2 (ops=ops@entry=0x7fffd120,
target=target@entry=0x0, tmode=tmode@entry=VOIDmode,
modifier=modifier@entry=EXPAND_NORMAL)
at ../../gcc-svn/trunk/gcc/expr.c:8971
8971  gcc_assert (temp);
(gdb) li
8966}
8967  else
8968gcc_assert (GET_MODE_CLASS (GET_MODE (op2)) ==
MODE_VECTOR_INT);
8969
8970  temp = expand_vec_perm (mode, op0, op1, op2, target);
8971  gcc_assert (temp);
8972  return temp;
8973
8974case DOT_PROD_EXPR:
8975  {
(gdb) p temp
$1 = (rtx_def *) 0x0

expand_vec_perm returns NULL_RTX for mno-sse4.


[Bug middle-end/53826] New: [4.8 Regression] [alpha]: ICE in fold_convert_loc, at fold-const.c:2008

2012-07-01 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53826

 Bug #: 53826
   Summary: [4.8 Regression] [alpha]: ICE in fold_convert_loc, at
fold-const.c:2008
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: ubiz...@gmail.com
  Host: x86_64-pc-linux-gnu
Target: alpha-linux-gnu


Created attachment 27728
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27728
Preprocessed source

Recent regression, triggered with libstdc++ testcase:

crosscompiler from x86_64-pc-linux-gnu to alpha-linux-gnu:

~/gcc-build-alpha/gcc/cc1plus -O2 -std=gnu++0x -quiet tuple_cat.ii
/home/uros/gcc-svn/trunk/libstdc++-v3/testsuite/20_util/tuple/creation_functions/tuple_cat.cc:
In function ‘int main()’:
/home/uros/gcc-svn/trunk/libstdc++-v3/testsuite/20_util/tuple/creation_functions/tuple_cat.cc:131:1:
internal compiler error: in fold_convert_loc, at fold-const.c:2008
 }
 ^
Please submit a full bug report,

(gdb) bt
#0  internal_error (gmsgid=gmsgid@entry=0xee36c5 "in %s, at %s:%d") at
../../gcc-svn/trunk/gcc/diagnostic.c:951
#1  0x00d3e614 in fancy_abort (file=file@entry=0xe0cbc8
"../../gcc-svn/trunk/gcc/fold-const.c", line=line@entry=2008,
function=function@entry=0xe0bba0 "fold_convert_loc")
at ../../gcc-svn/trunk/gcc/diagnostic.c:1011
#2  0x0082d6be in fold_convert_loc (loc=loc@entry=0,
type=0x7146d348, arg=) at
../../gcc-svn/trunk/gcc/fold-const.c:2008
#3  0x00bbc2e6 in build_zero_cst (type=) at
../../gcc-svn/trunk/gcc/tree.c:1668
#4  0x00a783c9 in init_subtree_with_zero
(access=access@entry=0x1579060, gsi=gsi@entry=0x7fffda50,
insert_after=insert_after@entry=0 '\000', loc=loc@entry=2329653)
at ../../gcc-svn/trunk/gcc/tree-sra.c:2521
#5  0x00a783a9 in init_subtree_with_zero (access=,
gsi=gsi@entry=0x7fffda50, insert_after=insert_after@entry=0 '\000',
loc=2329653)
at ../../gcc-svn/trunk/gcc/tree-sra.c:2532
#6  0x00a80af1 in sra_modify_constructor_assign (gsi=0x7fffda50,
stmt=) at ../../gcc-svn/trunk/gcc/tree-sra.c:2815
#7  sra_modify_assign (gsi=0x7fffda50, stmt=) at
../../gcc-svn/trunk/gcc/tree-sra.c:2906
#8  sra_modify_function_body () at ../../gcc-svn/trunk/gcc/tree-sra.c:3141
#9  perform_intra_sra () at ../../gcc-svn/trunk/gcc/tree-sra.c:3247

(gdb) f 2
#2  0x0082d6be in fold_convert_loc (loc=loc@entry=0,
type=0x7146d348, arg=) at
../../gcc-svn/trunk/gcc/fold-const.c:2008
2008  gcc_unreachable ();

(gdb) p debug_tree (type)
  constant 64>
unit size  constant 8>
align 8 symtab 0 alias set 20 canonical type 0x7146d348
pointer_to_this  reference_to_this
>
$3 = void

(gdb) p debug_tree (orig)
  constant 32>
unit size  constant 4>
align 32 symtab 0 alias set 2 canonical type 0x713535e8 precision 32
min  max 
pointer_to_this  reference_to_this
>
$4 = void

gcc needs to handle NULLPTR_TYPE here.


[Bug rtl-optimization/52983] [4.8 Regression] internal compiler error: in df_uses_record, at df-scan.c:3243

2012-07-01 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52983

--- Comment #8 from Uros Bizjak  2012-07-01 09:26:03 
UTC ---
Created attachment 27727
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27727
Another preprocessed source

This source fails on a crosscompiler from x86_64-pc-linux-gnu to
ia64-linux-gnu.

~/gcc-build-ia64/gcc/cc1 -std=gnu99 -O2 -g iall_i2.i

../../../gcc-svn/trunk/libgfortran/generated/iall_i2.c: In function ‘iall_i2’:
../../../gcc-svn/trunk/libgfortran/generated/iall_i2.c:187:1: internal compiler
error: in df_uses_record, at df-scan.c:3303
Please submit a full bug report,


[Bug rtl-optimization/52983] [4.8 Regression] internal compiler error: in df_uses_record, at df-scan.c:3243

2012-07-01 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52983

Uros Bizjak  changed:

   What|Removed |Added

 CC||ubizjak at gmail dot com

--- Comment #6 from Alexandre Oliva  2012-06-28 
07:39:33 UTC ---
Author: aoliva
Date: Thu Jun 28 07:39:25 2012
New Revision: 189036

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=189036
Log:
PR debug/53740
PR debug/52983
PR debug/48866
* dce.c (word_dce_process_block): Check whether inserting debug
temps are needed even for needed insns.
(dce_process_block): Likewise.
* df-problems.c (dead_debug_add): Add comment about multi-regs.
(dead_debug_insert_temp): Likewise.  Don't subreg when we're
setting fewer regs than a multi-reg requires.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/dce.c
trunk/gcc/df-problems.c

--- Comment #7 from Uros Bizjak  2012-07-01 09:22:16 
UTC ---
I have hit similar ICE on i64-linux-gnu:

(xgcc (GCC) 4.8.0 20120701 (experimental) [trunk revision 189100])

crosscompiler from x86_64-pc-linux-gnu to ia64-linux-gnu:

../../../gcc-svn/trunk/libgfortran/generated/iall_i2.c: In function ‘iall_i2’:
../../../gcc-svn/trunk/libgfortran/generated/iall_i2.c:187:1: internal compiler
error: in df_uses_record, at df-scan.c:3303
Please submit a full bug report,
with preprocessed source if appropriate.

Breakpoint 1, internal_error (gmsgid=gmsgid@entry=0xd958ea "in %s, at %s:%d")
at ../../gcc-svn/trunk/gcc/diagnostic.c:951
951 {
(gdb) bt
#0  internal_error (gmsgid=gmsgid@entry=0xd958ea "in %s, at %s:%d") at
../../gcc-svn/trunk/gcc/diagnostic.c:951
#1  0x00bd8804 in fancy_abort (file=file@entry=0xc681c8
"../../gcc-svn/trunk/gcc/df-scan.c", line=line@entry=3303,
function=function@entry=0xc68bbe "df_uses_record")
at ../../gcc-svn/trunk/gcc/diagnostic.c:1011
#2  0x005ce81b in df_uses_record
(collection_rec=collection_rec@entry=0x7fffd780, loc=,
ref_type=DF_REF_REG_MEM_LOAD, ref_type@entry=DF_REF_REG_USE, 
bb=bb@entry=0x712be380, insn_info=insn_info@entry=0x134d040,
flags=, flags@entry=0) at ../../gcc-svn/trunk/gcc/df-scan.c:3303
#3  0x005ce96f in df_insn_refs_collect
(collection_rec=collection_rec@entry=0x7fffd780,
bb=bb@entry=0x712be380, insn_info=0x134d040)
at ../../gcc-svn/trunk/gcc/df-scan.c:3510
#4  0x005cf4f0 in df_insn_rescan (insn=insn@entry=0x70f3de58) at
../../gcc-svn/trunk/gcc/df-scan.c:1280
#5  0x0061a251 in add_insn_before (insn=0x70f3de58,
before=before@entry=0x70f30630, bb=, bb@entry=0x0) at
../../gcc-svn/trunk/gcc/emit-rtl.c:3883
#6  0x0061a3b2 in emit_pattern_before_noloc (x=0x70f3fae0,
before=0x70f30630, last=, bb=0x0, make_raw=)
at ../../gcc-svn/trunk/gcc/emit-rtl.c:4161
#7  0x0061a42c in emit_pattern_before_setloc (pattern=0x70f3fae0,
before=, loc=112, insnp=, make_raw=)
at ../../gcc-svn/trunk/gcc/emit-rtl.c:4528
#8  0x005c7367 in dead_debug_insert_temp
(debug=debug@entry=0x7fffd920, uregno=,
insn=insn@entry=0x70f30630, 
where=where@entry=DEBUG_TEMP_BEFORE_WITH_VALUE) at
../../gcc-svn/trunk/gcc/df-problems.c:3349
#9  0x00afef4e in dce_process_block (au=0x136a928, redo_out=, bb=0x712be380) at ../../gcc-svn/trunk/gcc/dce.c:976
#10 fast_dce (word_level=word_level@entry=0 '\000') at
../../gcc-svn/trunk/gcc/dce.c:1044

(gdb) f 2
#2  0x005ce81b in df_uses_record
(collection_rec=collection_rec@entry=0x7fffd780, loc=,
ref_type=DF_REF_REG_MEM_LOAD, ref_type@entry=DF_REF_REG_USE, 
bb=bb@entry=0x712be380, insn_info=insn_info@entry=0x134d040,
flags=, flags@entry=0) at ../../gcc-svn/trunk/gcc/df-scan.c:3303
3303  gcc_assert (!DEBUG_INSN_P (insn_info->insn));
(gdb) p debug_rtx (insn_info->insn)
(debug_insn 685 441 442 36 (var_location:HI D#33 (mem:HI (post_modify:DI
(reg/v/f:DI 450 [ src ])
(plus:DI (reg/v/f:DI 450 [ src ])
(reg:DI 639 [ pretmp.129 ]))) [6 *src_178+0 S2 A16])) -1
 (nil))
$1 = void