Bug 33273 - [4.3 Regression] FAIL: 27_io/basic_istream/ignore/char/1.cc (test for excess errors)
Summary: [4.3 Regression] FAIL: 27_io/basic_istream/ignore/char/1.cc (test for excess ...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: 4.3.0
Assignee: Not yet assigned to anyone
URL:
Keywords:
: 33332 (view as bug list)
Depends on:
Blocks: 38902
  Show dependency treegraph
 
Reported: 2007-08-31 23:26 UTC by John David Anglin
Modified: 2009-01-18 22:03 UTC (History)
5 users (show)

See Also:
Host: hppa*-*-*
Target: hppa*-*-*
Build: hppa*-*-*
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John David Anglin 2007-08-31 23:26:37 UTC
This started to fail on August 25, 2007.

Executing on host: /home/dave/gnu/gcc-4.3/objdir/./gcc/g++ -shared-libgcc -B/hom
e/dave/gnu/gcc-4.3/objdir/./gcc -nostdinc++ -L/home/dave/gnu/gcc-4.3/objdir/hppa
-linux/libstdc++-v3/src -L/home/dave/gnu/gcc-4.3/objdir/hppa-linux/libstdc++-v3/
src/.libs -B/home/dave/opt/gnu/gcc/gcc-4.3.0/hppa-linux/bin/ -B/home/dave/opt/gn
u/gcc/gcc-4.3.0/hppa-linux/lib/ -isystem /home/dave/opt/gnu/gcc/gcc-4.3.0/hppa-l
inux/include -isystem /home/dave/opt/gnu/gcc/gcc-4.3.0/hppa-linux/sys-include -g
 -O2 -D_GLIBCXX_ASSERT -ffunction-sections -fdata-sections -fmessage-length=0 -g
 -O2 -D_GNU_SOURCE -DLOCALEDIR="." -nostdinc++ -I/home/dave/gnu/gcc-4.3/objdir/h
ppa-linux/libstdc++-v3/include/hppa-linux -I/home/dave/gnu/gcc-4.3/objdir/hppa-l
inux/libstdc++-v3/include -I/home/dave/gnu/gcc-4.3/gcc/libstdc++-v3/libsupc++ -I
/home/dave/gnu/gcc-4.3/gcc/libstdc++-v3/include/backward -I/home/dave/gnu/gcc-4.
3/gcc/libstdc++-v3/testsuite/util -Wl,--gc-sections /home/dave/gnu/gcc-4.3/gcc/l
ibstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc    -include bits/stdc
++.h ./libtestc++.a  -lm   -o ./1.exe    (timeout = 600)
/home/dave/gnu/gcc-4.3/gcc/libstdc++-v3/testsuite/27_io/basic_istream/ignore/cha
r/1.cc: In function 'void test01()':
/home/dave/gnu/gcc-4.3/gcc/libstdc++-v3/testsuite/27_io/basic_istream/ignore/cha
r/1.cc:73: error: unrecognizable insn:
(insn 273 272 274 39 /home/dave/gnu/gcc-4.3/gcc/libstdc++-v3/testsuite/27_io/bas
ic_istream/ignore/char/1.cc:48 (parallel [
            (set (mem/s/c:QI (reg:SI 206) [69 carray+8 S1 A32])
                (const_int 0 [0x0]))
            (clobber (reg:SI 207))
            (clobber (reg:SI 208))
            (use (const_int 52 [0x34]))
            (use (const_int 4 [0x4]))
        ]) -1 (nil))
/home/dave/gnu/gcc-4.3/gcc/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc:73: internal compiler error: in extract_insn, at recog.c:1990

This looks like a target bug but it was obviously introduced by the following
change:

2007-08-24  Sandra Loosemore  <sandra@codesourcery.com>
            Nigel Stephens <nigel@mips.com>

        PR target/11787

        * doc/tm.texi (SET_RATIO, SET_BY_PIECES_P): Document new macros.
        (STORE_BY_PIECES_P): No longer applies to __builtin_memset.
	  ...
Comment 1 John David Anglin 2007-09-01 01:12:48 UTC
Breakpoint 1, gen_setmemsi (operand0=0x402a02a0, operand1=0x60175290,
    operand2=0x601751d0, operand3=0x601751e0)
    at ../../gcc/gcc/config/pa/pa.md:3744
3744
(gdb) p debug_rtx (operand0)
(mem/s/c:QI (plus:SI (reg/f:SI 90 virtual-stack-vars)
        (const_int 108 [0x6c])) [69 carray+8 S1 A32])
$1 = void
(gdb) bt
#0  gen_setmemsi (operand0=0x402a02a0, operand1=0x60175290,
    operand2=0x601751d0, operand3=0x601751e0)
    at ../../gcc/gcc/config/pa/pa.md:3744
#1  0x002dd69c in set_storage_via_setmem (object=0x402a02a0, size=0x60175290,
    val=0x0, align=<value optimized out>, expected_align=32,
    expected_size=1076494832) at ../../gcc/gcc/expr.c:2732
#2  0x002df198 in clear_storage_hints (object=0x402a02a0, size=0x60175290,
    method=BLOCK_OP_NORMAL, expected_align=0, expected_size=0)
    at ../../gcc/gcc/expr.c:2566
#3  0x002df2dc in clear_storage (object=0x402a02a0, size=0x60175290,
    method=1612141008) at ../../gcc/gcc/expr.c:2579
#4  0x002e092c in store_expr (exp=<value optimized out>, target=0x402a01f0,
    call_param_p=0, nontemporal=<value optimized out>)
    at ../../gcc/gcc/expr.c:4526
#5  0x002e300c in expand_assignment (to=0x40123240, from=0x400973e0,
    nontemporal=0 '\0') at ../../gcc/gcc/expr.c:4213
#6  0x002c8dac in expand_expr_real_1 (exp=0x4008c6a0, target=0x0,
    tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
    at ../../gcc/gcc/expr.c:8986
#7  0x002da92c in expand_expr_real (exp=0x4008c6a0, target=0x601751d0,
    tmode=VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0)
    at ../../gcc/gcc/expr.c:6961
#8  0x0043f368 in expand_expr_stmt (exp=0x402a02a0) at ../../gcc/gcc/expr.h:514
...

md.texi says the first operand of the setmem instruction pattern should be a
mem:BLK.
Comment 2 Sandra Loosemore 2007-09-01 01:50:38 UTC
Unfortunately I have no pa machine here for testing this myself.  Off the top of my head, I would suggest looking at the part of the patch discussed here, which was the only part that I thought would change behavior on anything other than MIPS.

http://gcc.gnu.org/ml/gcc-patches/2007-08/msg01397.html
Comment 3 John David Anglin 2007-09-01 15:25:40 UTC
Sorry Sandra, I see looking at the backtrace in more detail that the ICE
arises from the new code added here:

2007-08-24  Jakub Jelinek  <jakub@redhat.com>

        * expr.c (store_expr): Optimize initialization of an array
        with STRING_CST.

It looks like the problem is here:

+      dest_mem = target;
+
+      dest_mem = store_by_pieces (dest_mem,
+                                 str_copy_len, builtin_strncpy_read_str,
+                                 (void *) TREE_STRING_POINTER (exp),
+                                 MEM_ALIGN (target),
+                                 exp_len > str_copy_len ? 1 : 0);

The memory pointer returned by store_by_pieces is QImode.
Comment 4 John David Anglin 2007-09-07 14:55:18 UTC
*** Bug 33332 has been marked as a duplicate of this bug. ***
Comment 5 John David Anglin 2007-09-07 14:57:19 UTC
Patch here:
http://gcc.gnu.org/ml/gcc-patches/2007-09/msg00084.html
Comment 6 John David Anglin 2007-09-17 02:13:36 UTC
Subject: Bug 33273

Author: danglin
Date: Mon Sep 17 02:13:23 2007
New Revision: 128537

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=128537
Log:
	PR middle-end/33273
	* expr.c (store_expr): Call adjust_address to change mode of dest_mem
	to BLKmode.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/expr.c

Comment 7 John David Anglin 2007-09-17 02:15:43 UTC
Fixed.