[Bug middle-end/49721] convert_memory_address_addr_space may generate invalid new insns

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49721

--- Comment #20 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 13:56:05 
UTC ---
(In reply to comment #17)
 H.J., I agree with what you write in comment 16.  But unless we are sure that
 the problematic composition will never be generated (e.g. by ivopts), we 
 cannot
 afford that.

I come to a conclusion that we must transform

ptr_extend:DI (plus:SI (FOO:SI) (const_int Y)))

to

(plus:DI (ptr_extend:DI (FOO:SI)) (const_int Y))

since this this how GCC supports Pmode != ptr_mode. You can
disable it and watch its fallout on HP-UX.  We never run into
it for zero_extend before since x32 is the first zero_extend
target.  We should extend it to zero_extend.

 The patch in comment 7 may have some snafu, but overall it looks very sane. 
 It's just that a const is not being stripped.  Can it be applied on top of the

I tried to strip const with

diff --git a/gcc/explow.c b/gcc/explow.c
index 069a68a..17afbbc 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -380,7 +380,7 @@ convert_memory_address_addr_space_1 (enum machine_mode
to_mode ATTRIBUTE_UNUSED,
 case CONST:
   temp = convert_memory_address_addr_space_1 (to_mode, XEXP (x, 0),
as, no_emit);
-  return temp ? gen_rtx_CONST (to_mode, temp) : temp;
+  return temp  !REG_P (temp) ? gen_rtx_CONST (to_mode, temp) : temp;
   break;

 case PLUS:

and it still has massive failures:

http://gcc.gnu.org/ml/gcc-testresults/2011-08/msg00264.html

 x32 branch?  Or do I first have to revert some earlier revision?

The patch in comment 7 is for trunk.


[Bug lto/49922] I try to build libgmp using PGO and lto, but the test will result in internal compiler error

2011-08-03 Thread xunxun1982 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49922

--- Comment #1 from PcX xunxun1982 at gmail dot com 2011-08-03 14:00:26 UTC 
---
Change to lto component


[Bug tree-optimization/49957] Fails to SLP in 410.bwaves

2011-08-03 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49957

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||burnus at gcc dot gnu.org

--- Comment #2 from Tobias Burnus burnus at gcc dot gnu.org 2011-08-03 
14:05:13 UTC ---
Cf. RFC Fortran patch at http://gcc.gnu.org/ml/fortran/2011-08/msg00012.html to
change the index order into the canonical form.


[Bug middle-end/49721] convert_memory_address_addr_space may generate invalid new insns

2011-08-03 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49721

--- Comment #21 from Uros Bizjak ubizjak at gmail dot com 2011-08-03 14:05:06 
UTC ---
(In reply to comment #20)

 and it still has massive failures:
 
 http://gcc.gnu.org/ml/gcc-testresults/2011-08/msg00264.html

You broke exceptions. Similar problem can be currently seen on alpha, see PR
49688.


[Bug target/47744] [x32] ICE: in reload_cse_simplify_operands, at postreload.c:403

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

--- Comment #40 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org 2011-08-03 
14:07:36 UTC ---
Author: hjl
Date: Wed Aug  3 14:07:32 2011
New Revision: 177271

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=177271
Log:
Add testcases for PR target/47744.

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

PR target/47744
* gcc.dg/torture/pr47744-1.c: New.
* gcc.dg/torture/pr47744-2.c: Likewise.
* gcc.dg/torture/pr47744-3.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr47744-1.c
trunk/gcc/testsuite/gcc.dg/torture/pr47744-2.c
trunk/gcc/testsuite/gcc.dg/torture/pr47744-3.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug target/49781] [x32] Unnecessary lea in x32 mode

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781

--- Comment #8 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 14:10:25 
UTC ---
(In reply to comment #6)
 Created attachment 24899 [details]
 Proposed patch that exploits addr32.
 
 H.J., can you please test this patch on mx32.
 
 The patch bootstraps and regression tests OK on x86_64-pc-linux-gnu {,-m32}.

It failed the testcase for PR 47744, which I just checked in:

[hjl@gnu-33 ilp32-24]$
/export/build/gnu/gcc-x32-test/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-x32-test/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O3
-std=gnu99
/export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c
/export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c: In
function \u2018matmul_i16\u2019:
/export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c:40:1:
error: insn does not satisfy its constraints:
(insn 146 66 67 4 (set (reg:TI 0 ax)
(mem:TI (zero_extend:DI (plus:SI (reg:SI 4 si [orig:119 ivtmp.30 ]
[119])
(reg:SI 5 di [orig:102 dest_y ] [102]))) [6 MEM[base:
dest_y_18, index: ivtmp.30_63, offset: 0B]+0 S16 A128]))
/export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c:34 60
{*movti_internal_rex64}
 (nil))
/export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c:40:1:
internal compiler error: in reload_cse_simplify_operands, at postreload.c:403
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
[hjl@gnu-33 ilp32-24]$


[Bug fortran/49962] New: internal compiler error when using type-bounded function returning vector

2011-08-03 Thread wangmianzhi1 at linuxmail dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49962

   Summary: internal compiler error when using type-bounded
function returning vector
   Product: gcc
   Version: 4.5.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: wangmianz...@linuxmail.org


Created attachment 24903
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24903
a reduced example

when compiling reducedcase.f90, a code using type-bounded function returning
vector:
$ gfortran -o reducedcase reducedcase.f90 
reducedcase.f90: In function ‘test’:
reducedcase.f90:18:0: internal compiler error: in gfc_conv_variable, at
fortran/trans-expr.c:551
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-4.5/README.Bugs for instructions.

I think this code should be valid according to fortran 2003 standard.
Even if it is not valid, I think better error handling would be good.
many thanks.


$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.5.2/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.5.2-8ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.5/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.5 --enable-shared --enable-multiarch
--with-multiarch-defaults=x86_64-linux-gnu --enable-linker-build-id
--with-system-zlib --libexecdir=/usr/lib/x86_64-linux-gnu
--without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.5 --libdir=/usr/lib/x86_64-linux-gnu
--enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-plugin --enable-gold --enable-ld=default
--with-plugin-ld=ld.gold --enable-objc-gc --disable-werror --with-arch-32=i686
--with-tune=generic --enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) 


$ uname -a
Linux mianzhi-laptop 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:07:17 UTC
2011 x86_64 x86_64 x86_64 GNU/Linux


[Bug fortran/49962] internal compiler error when using type-bounded function returning vector

2011-08-03 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49962

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr 2011-08-03 
14:22:47 UTC ---
With gfortran 4.6.1 and trunk, the code compiles and gives at run time

   1   2   3

but I get the ICE with 4.5.3. So the bug has been fixed, but not backported to
4.5.


[Bug fortran/49962] internal compiler error when using type-bounded function returning vector

2011-08-03 Thread wangmianzhi1 at linuxmail dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49962

--- Comment #2 from wangmianzhi wangmianzhi1 at linuxmail dot org 2011-08-03 
14:24:19 UTC ---
On 2011年08月03日 10:23, dominiq at lps dot ens.fr wrote:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49962

 --- Comment #1 from Dominique d'Humieresdominiq at lps dot ens.fr  
 2011-08-03 14:22:47 UTC ---
 With gfortran 4.6.1 and trunk, the code compiles and gives at run time

 1   2   3

 but I get the ICE with 4.5.3. So the bug has been fixed, but not backported to
 4.5.

Thank you for your help very much!

Mianzhi


[Bug tree-optimization/49963] New: ICE: in abs_hwi, at hwint.c:108

2011-08-03 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49963

   Summary: ICE: in abs_hwi, at hwint.c:108
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: g...@gcc.gnu.org
  Host: x86-linux-gnu
Target: avr
 Build: x86-linux-gnu


Observed this ICE in the test suite for 4.7 trunk r177267 after upgrading from
177070:

gcc.c-torture/execute/divconst-2.c: In function 'std_eqn':

gcc.c-torture/execute/divconst-2.c:20:3: internal compiler error: in abs_hwi,
at hwint.c:108


FAIL: gcc.c-torture/execute/divconst-2.c compilation,  -O0  (internal compiler
error)
FAIL: gcc.c-torture/execute/divconst-2.c compilation,  -O1  (internal compiler
error)
FAIL: gcc.c-torture/execute/divconst-2.c compilation,  -O2  (internal compiler
error)
...

== configure 

Target: avr
Configured with: ../../gcc.gnu.org/trunk/configure --target=avr
--prefix=/local/gnu/install/gcc-4.7 --disable-nls --disable-shared
--enable-languages=c,c++ --with-dwarf2 --disable-lto
Thread model: single
gcc version 4.7.0 20110803 (experimental) (GCC)
GNU C (GCC) version 4.7.0 20110803 (experimental) (avr)
compiled by GNU C version 4.3.2 [gcc-4_3-branch revision 141291], GMP
version 5.0.1, MPFR version 3.0.0-p8, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096

== hwint.c:abs_hwi() 

hwint.c:abs_hwi() reads

/* Compute the absolute value of X.  */

HOST_WIDE_INT
abs_hwi (HOST_WIDE_INT x)
{
  gcc_checking_assert (x != HOST_WIDE_INT_MIN);
  return x = 0 ? x : -x;
}

== Backtrace =


#0  fancy_abort (file=0x8890660 ../../../gcc.gnu.org/trunk/gcc/hwint.c,
line=108, function=0x889069b abs_hwi) at
../../../gcc.gnu.org/trunk/gcc/diagnostic.c:893
#1  0x08395087 in abs_hwi (x=-2147483648) at
../../../gcc.gnu.org/trunk/gcc/hwint.c:108
#2  0x08306e8a in fold_plusminus_mult_expr (loc=2983, code=PLUS_EXPR,
type=0xb7d5d420, arg0=0xb7dcdcb0, arg1=0xb7dce24c) at
../../../gcc.gnu.org/trunk/gcc/fold-const.c:7040
#3  0x082bbef6 in fold_binary_loc (loc=2983, code=PLUS_EXPR, type=0xb7d5d420,
op0=0xb7dcdcb0, op1=0xb7dce24c) at
../../../gcc.gnu.org/trunk/gcc/fold-const.c:9685
#4  0x083174d5 in fold (expr=0xb7dcdccc) at
../../../gcc.gnu.org/trunk/gcc/fold-const.c:13666
#5  0x0813c46c in c_fully_fold_internal (expr=0xb7dcdccc, in_init=0 '\0',
maybe_const_operands=0xbfffdf4b \001\030, maybe_const_itself=0xbfffde6a
\001\001ÌÜÜ· ÔÕ·) at ../../../gcc.gnu.org/trunk/gcc/c-family/c-common.c:1238
#6  0x0813d19b in c_fully_fold (expr=0xb7dcdccc, in_init=212 'Ô',
maybe_const=0xbfffdf4b \001\030) at
../../../gcc.gnu.org/trunk/gcc/c-family/c-common.c:1029
#7  0x080eadcb in build_binary_op (location=2989, code=EQ_EXPR,
orig_op0=0xb7dcdccc, orig_op1=0xb7dce150, convert_p=1) at
../../../gcc.gnu.org/trunk/gcc/c-typeck.c:10172
#8  0x080ef279 in parser_build_binary_op (location=2989, code=EQ_EXPR,
arg1={value = 0xb7dcdccc, original_code = PLUS_EXPR, original_type = 0x0},
arg2={value = 0xb7dce150, original_code = ERROR_MARK, original_type =
0xb7d5d420}) at ../../../gcc.gnu.org/trunk/gcc/c-typeck.c:3218
#9  0x080fbe57 in c_parser_binary_expression (parser=0xb7dcda9c, after=value
optimized out, prec=PREC_NONE) at
../../../gcc.gnu.org/trunk/gcc/c-parser.c:5663
#10 0x080fc49f in c_parser_conditional_expression (parser=0xb7dcda9c,
after=0x8000) at ../../../gcc.gnu.org/trunk/gcc/c-parser.c:5330
#11 0x080fc9c8 in c_parser_expr_no_commas (parser=0xb7dcda9c, after=0x8000)
at ../../../gcc.gnu.org/trunk/gcc/c-parser.c:5250
#12 0x080fce68 in c_parser_expression (parser=0xb7d97dd4) at
../../../gcc.gnu.org/trunk/gcc/c-parser.c:6716
#13 0x080fe5f3 in c_parser_expression_conv (parser=0xb7dcda9c) at
../../../gcc.gnu.org/trunk/gcc/c-parser.c:6747
#14 0x080f887a in c_parser_statement_after_labels (parser=0xb7dcda9c) at
../../../gcc.gnu.org/trunk/gcc/c-parser.c:4416
#15 0x080f997a in c_parser_compound_statement_nostart (parser=0xb7dcda9c) at
../../../gcc.gnu.org/trunk/gcc/c-parser.c:4147
#16 0x08107852 in c_parser_compound_statement (parser=0xb7dcda9c) at
../../../gcc.gnu.org/trunk/gcc/c-parser.c:3984
#17 0x080f7fc3 in c_parser_declaration_or_fndef (parser=0xb7dcda9c, fndef_ok=1
'\001', static_assert_ok=value optimized out, empty_ok=1 '\001', nested=0
'\0', start_attr_ok=value optimized out, objc_foreach_object_declaration=0x0)
at ../../../gcc.gnu.org/trunk/gcc/c-parser.c:1749
#18 0x081081da in c_parser_external_declaration (parser=0xb7dcda9c) at
../../../gcc.gnu.org/trunk/gcc/c-parser.c:1354
#19 0x08108a1b in c_parse_file () at
../../../gcc.gnu.org/trunk/gcc/c-parser.c:1242
#20 0x081501b5 in c_common_parse_file () at
../../../gcc.gnu.org/trunk/gcc/c

[Bug bootstrap/49964] New: Bootstrap failed with AVX turned on

2011-08-03 Thread kirill.yukhin at intel dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49964

   Summary: Bootstrap failed with AVX turned on
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: kirill.yuk...@intel.com


Revision 177268 failed to bootstrap with AVX enabled.


[Bug bootstrap/49964] Bootstrap failed with AVX turned on

2011-08-03 Thread kirill.yukhin at intel dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49964

--- Comment #1 from Yukhin Kirill kirill.yukhin at intel dot com 2011-08-03 
14:28:55 UTC ---
Started from here
http://gcc.gnu.org/ml/gcc-regression/2011-08/msg00051.html


[Bug tree-optimization/49957] Fails to SLP in 410.bwaves

2011-08-03 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49957

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-08-03 
14:41:49 UTC ---
The patch now makes us vectorize

shell_lam.f:303: note: LOOP VECTORIZED.
shell_lam.f:262: note: LOOP VECTORIZED.
shell_lam.f:205: note: LOOP VECTORIZED.

compared to just

shell_lam.f:262: note: LOOP VECTORIZED.

without.


[Bug middle-end/47383] [x32] ivopts miscompiles Pmode != ptr_mode

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

--- Comment #17 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org 2011-08-03 
14:44:59 UTC ---
Author: hjl
Date: Wed Aug  3 14:44:54 2011
New Revision: 177277

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=177277
Log:
Add a testcase for PR middle-end/47383.

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

PR middle-end/47383
* gcc.dg/torture/pr47383.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr47383.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug target/49781] [x32] Unnecessary lea in x32 mode

2011-08-03 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781

--- Comment #9 from Uros Bizjak ubizjak at gmail dot com 2011-08-03 14:45:40 
UTC ---
(In reply to comment #8)

  Created attachment 24899 [details]
  Proposed patch that exploits addr32.
  
  H.J., can you please test this patch on mx32.
  
  The patch bootstraps and regression tests OK on x86_64-pc-linux-gnu {,-m32}.
 
 It failed the testcase for PR 47744, which I just checked in:
 
 [hjl@gnu-33 ilp32-24]$
 /export/build/gnu/gcc-x32-test/build-x86_64-linux/gcc/xgcc
 -B/export/build/gnu/gcc-x32-test/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O3
 -std=gnu99
 /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c
 /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c: In
 function \u2018matmul_i16\u2019:
 /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c:40:1:
 error: insn does not satisfy its constraints:
 (insn 146 66 67 4 (set (reg:TI 0 ax)
 (mem:TI (zero_extend:DI (plus:SI (reg:SI 4 si [orig:119 ivtmp.30 ]
 [119])
 (reg:SI 5 di [orig:102 dest_y ] [102]))) [6 MEM[base:
 dest_y_18, index: ivtmp.30_63, offset: 0B]+0 S16 A128]))
 /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c:34 60
 {*movti_internal_rex64}
  (nil))
 /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c:40:1:
 internal compiler error: in reload_cse_simplify_operands, at postreload.c:403
 Please submit a full bug report,
 with preprocessed source if appropriate.
 See http://gcc.gnu.org/bugs.html for instructions.
 [hjl@gnu-33 ilp32-24]$

Hm, offsetable operand ...


[Bug middle-end/49721] convert_memory_address_addr_space may generate invalid new insns

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49721

--- Comment #22 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 14:48:09 
UTC ---
(In reply to comment #17)
 H.J., I agree with what you write in comment 16.  But unless we are sure that
 the problematic composition will never be generated (e.g. by ivopts), we 
 cannot
 afford that.

My understanding is ivopts only works on ptr_mode (see PR 47383).


[Bug rtl-optimization/49900] [4.7 regression] ICE in advance_target_bb, at sched-ebb.c:691

2011-08-03 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49900

Andreas Schwab sch...@linux-m68k.org changed:

   What|Removed |Added

 Status|WAITING |ASSIGNED

--- Comment #4 from Andreas Schwab sch...@linux-m68k.org 2011-08-03 14:49:56 
UTC ---
Works on Babe.


[Bug libgomp/49965] libgomp.c++/reduction-4.C and libgomp.c++/task-8.C FAIL on Solaris 11/SPARC

2011-08-03 Thread ro at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49965

Rainer Orth ro at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.7.0


[Bug bootstrap/49740] [4.7 Regression] powerpc native bootstrap with -O3 produces Bootstrap comparison failure!

2011-08-03 Thread dougmencken at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49740

--- Comment #2 from Douglas Mencken dougmencken at gmail dot com 2011-08-03 
14:56:23 UTC ---
(In reply to comment #1)
 Did it recover?

What shall I try? gcc-4.7-20110730? svn checkout? Some patch? (Nothing has been
attached or reported.)


[Bug libgomp/49965] New: libgomp.c++/reduction-4.C and libgomp.c++/task-8.C FAIL on Solaris 11/SPARC

2011-08-03 Thread ro at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49965

   Summary: libgomp.c++/reduction-4.C and libgomp.c++/task-8.C
FAIL on Solaris 11/SPARC
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libgomp
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: r...@gcc.gnu.org
CC: ja...@gcc.gnu.org
  Host: sparc-sun-solaris2.11
Target: sparc-sun-solaris2.11
 Build: sparc-sun-solaris2.11


Two new libgomp testcases FAIL on Solaris 11/SPARC:

FAIL: libgomp.c++/reduction-4.C  -O0  execution test

  both 32 and 64-bit

  abort () here:

#3  0x000183b8 in foolong long, long double () at
/vol/gcc/src/hg/trunk/solaris/libgomp/testsuite/libgomp.c++/reduction-4.C:26

  j = 8, p = inf

  This doesn't happen on Solaris 10/x86.

FAIL: libgomp.c++/task-8.C  -O0  (test for excess errors)
Excess errors:
ld: warning: symbol 'err' has differing types:
(file /var/tmp//ccD0aiQD.o type=OBJT; file /lib/libc.so type=FUNC);
/var/tmp//ccD0aiQD.o definition taken
ld: warning: symbol 'err' has differing types:
(file /var/tmp//ccD0aiQD.o type=OBJT; file /lib/libc.so type=FUNC);

  err() was only introduced in Solaris 11.  Replacing err by error fixes this.


[Bug target/49781] [x32] Unnecessary lea in x32 mode

2011-08-03 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781

--- Comment #10 from Uros Bizjak ubizjak at gmail dot com 2011-08-03 15:01:10 
UTC ---
(In reply to comment #9)
 (In reply to comment #8)
 
   Created attachment 24899 [details]
   Proposed patch that exploits addr32.
   
   H.J., can you please test this patch on mx32.
   
   The patch bootstraps and regression tests OK on x86_64-pc-linux-gnu 
   {,-m32}.
  
  It failed the testcase for PR 47744, which I just checked in:
  
  [hjl@gnu-33 ilp32-24]$
  /export/build/gnu/gcc-x32-test/build-x86_64-linux/gcc/xgcc
  -B/export/build/gnu/gcc-x32-test/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O3
  -std=gnu99
  /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c
  /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c: In
  function \u2018matmul_i16\u2019:
  /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c:40:1:
  error: insn does not satisfy its constraints:
  (insn 146 66 67 4 (set (reg:TI 0 ax)
  (mem:TI (zero_extend:DI (plus:SI (reg:SI 4 si [orig:119 ivtmp.30 ]
  [119])
  (reg:SI 5 di [orig:102 dest_y ] [102]))) [6 MEM[base:
  dest_y_18, index: ivtmp.30_63, offset: 0B]+0 S16 A128]))
  /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c:34 
  60
  {*movti_internal_rex64}
   (nil))
  /export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/torture/pr47744-2.c:40:1:
  internal compiler error: in reload_cse_simplify_operands, at 
  postreload.c:403
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See http://gcc.gnu.org/bugs.html for instructions.
  [hjl@gnu-33 ilp32-24]$
 
 Hm, offsetable operand ...

This additional patch prevents zero_extend when we deal with
wider-than-word-size moves.  These moves need offsetable_operand, which
zero_extend (...) isn't.

Index: i386.c
===
--- i386.c(revision 177281)
+++ i386.c(working copy)
@@ -11681,6 +11689,10 @@ ix86_legitimate_address_p (enum machine_
   rtx base, index, disp;
   HOST_WIDE_INT scale;

+  if (GET_CODE (addr) == ZERO_EXTEND
+   GET_MODE_SIZE (mode)  UNITS_PER_WORD)
+  return false;
+
   if (ix86_decompose_address (addr, parts) = 0)
 /* Decomposition failed.  */
 return false;


[Bug target/30282] Optimization flag -O1 -fschedule-insns2 cause red zone to be used when there is none

2011-08-03 Thread amodra at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30282

Alan Modra amodra at gmail dot com changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 AssignedTo|unassigned at gcc dot   |amodra at gmail dot com
   |gnu.org |


[Bug libgomp/49965] libgomp.c++/reduction-4.C and libgomp.c++/task-8.C FAIL on Solaris 11/SPARC

2011-08-03 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49965

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2011-08-03 
15:10:13 UTC ---
for task-8.C, error is a function on linux, so please replace it by errval
or err_atomic or similar instead if err doesn't work on Solaris.

Fur reduction-4.C, perhaps Solaris long double handling is broken?  The
testcase doesn't use anything complicated, in *.omp_fn* of the long long/long
double version the private f is initialized to +Inf, then in some iterations
set to 9.0 or -2.0 and finally everything is MIN_EXPRed together in a critical
section.


[Bug libstdc++/1773] __cplusplus defined to 1, should be 199711L

2011-08-03 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773

--- Comment #102 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE 2011-08-03 15:12:29 UTC ---
 --- Comment #101 from Paolo Carlini paolo.carlini at oracle dot com 
 2011-08-03 10:02:44 UTC ---
 Thanks Marc. Thus, it seems to me that Rainer should have a look to the
 fixincludes, double check make sense to him, aren't library bits and should be
 sorted out between you two.

What would help enormously for this would be a complete justification
for the individual fixes:

* Does a standard call for some specific declaration?  If so, which one,
  chapter and verse?

  In such a case, it will be easier get Oracle's attention so the issue
  is also fixed upstream.(If only C++ 2011, it might be a bit of a
  tougher ride.)

* If this is a libstdc++ requirement not currently demanded by a
  standard, would there be an alternative way to fix this inside
  libstdc++?  The reason I'm asking is that the OS headers tend to be a
  moving target, and you may have to keep updating the fix to keep it
  working.

Please keep in mind that my understanding of C++ is minimal, so what may
be obvious to you might not be to me.  I'm not at all opposed to perform
fixincludes fixes, but if there are alternatives, they should at least
be considered.

Thanks.
Rainer


[Bug tree-optimization/49955] Fails to do partial basic-block SLP

2011-08-03 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49955

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.08.03 15:12:42
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-08-03 
15:12:42 UTC ---
The loop that remains after fixing PR49957 in 410.bwaves is the following,
which loop SLP does not handle (well, I'm not exactly sure) because

t.f:18: note: == examining statement: t1_62 = *q_61(D)[D.1645_60];

t.f:18: note: num. args = 4 (not unary/binary/ternary op).
t.f:18: note: vect_is_simple_use: operand *q_61(D)[D.1645_60]
t.f:18: note: not ssa-name.
t.f:18: note: use not simple.
t.f:18: note: no array mode for V2DF[5]
t.f:18: note: the size of the group of strided accesses is not a power of 2
t.f:18: note: not vectorized: relevant stmt not supported: t1_62 =
*q_61(D)[D.1645_60];

t.f:18: note: bad operation or unsupported loop bound.
t.f:1: note: vectorized 0 loops in function.

probably the issue that we can't handle this kind of invariants in the
SLP group?  Thus, the SLP group should be q(2,..), q(3,...) ... q(5, ...)
which is size 4, q(1,..) should be treated as invariant. 


  subroutine shell(nx,ny,nz,q,dt,cfl,dx,dy,dz)
  implicit none
  integer nx,ny,nz,n,i,j,k
  real*8 cfl,dx,dy,dz,dt
  real*8 gm,Re,Pr,cfll,t1,t2,t3,t4,t5,t6,t7,t8,mu

  real*8 q(5,nx,ny,nz)

C   This particular problem is periodic only


  cfll=0.1d0+(n-1.0d0)*cfl/20.0d0
  if (cfll.ge.cfl) cfll=cfl
  t8=0.0d0

  do k=1,nz
 do j=1,ny
do i=1,nx
   t1=q(1,i,j,k)
   t2=q(2,i,j,k)/t1
   t3=q(3,i,j,k)/t1
   t4=q(4,i,j,k)/t1
   t5=(gm-1.0d0)*(q(5,i,j,k)-0.5d0*t1*(t2*t2+t3*t3+t4*t4))
   t6=dSQRT(gm*t5/t1)
   mu=gm*Pr*(gm*t5/t1)**0.75d0*2.0d0/Re/t1
   t7=((dabs(t2)+t6)/dx+mu/dx**2)**2 +
 1((dabs(t3)+t6)/dy+mu/dy**2)**2 +
 2((dabs(t4)+t6)/dz+mu/dz**2)**2
   t7=DSQRT(t7)
   t8=max(t8,t7)
enddo
 enddo
  enddo
  dt=cfll / t8

  return
  end


[Bug tree-optimization/49957] Fails to SLP in 410.bwaves

2011-08-03 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49957

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 AssignedTo|unassigned at gcc dot   |rguenth at gcc dot gnu.org
   |gnu.org |

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2011-08-03 
15:17:42 UTC ---
Mine.


[Bug fortran/49961] type bounded function can not return a pointer of a array

2011-08-03 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49961

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||burnus at gcc dot gnu.org

--- Comment #2 from Tobias Burnus burnus at gcc dot gnu.org 2011-08-03 
15:21:32 UTC ---
Thanks for the report. As it is not a regression, I don't think the fix will be
back-ported. Fortunately, it seems to be fixed in 4.6.x and in the current
developer version 4.7.

For using OOP programming features such as type-bound procedures and
polymorphism, it is best to use GCC 4.6 or 4.7. See http://gcc.gnu.org/wiki/OOP
for an overview of fixed and still unfixed OOP bugs by GCC version.

Maybe Ubuntu also has a newer version, which can be installed besides (or
instead of) the system GCC. If not, Debian has GCC 4.6.1 in Testing/Unstable,
cf.
http://packages.debian.org/search?keywords=gfortransearchon=namessuite=allsection=all

Additionally, unofficial nightly builds of GCC are available from
http://gcc.gnu.org/wiki/GFortranBinaries
Those can also be installed without root permissions in some directory.


[Bug fortran/49962] internal compiler error when using type-bounded function returning vector

2011-08-03 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49962

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||burnus at gcc dot gnu.org

--- Comment #3 from Tobias Burnus burnus at gcc dot gnu.org 2011-08-03 
15:21:23 UTC ---
Thanks for the report. As it is not a regression, I don't think the fix will be
back-ported. Fortunately, it seems to be fixed in 4.6.x and in the current
developer version 4.7.

For using OOP programming features such as type-bound procedures and
polymorphism, it is best to use GCC 4.6 or 4.7. See http://gcc.gnu.org/wiki/OOP
for an overview of fixed and still unfixed OOP bugs by GCC version.

Maybe Ubuntu also has a newer version, which can be installed besides (or
instead of) the system GCC. If not, Debian has GCC 4.6.1 in Testing/Unstable,
cf.
http://packages.debian.org/search?keywords=gfortransearchon=namessuite=allsection=all

Additionally, unofficial nightly builds of GCC are available from
http://gcc.gnu.org/wiki/GFortranBinaries
Those can also be installed without root permissions in some directory.


[Bug middle-end/49946] Thread jumps confuse loop unrolling

2011-08-03 Thread izamyatin at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49946

--- Comment #1 from Igor Zamyatin izamyatin at gmail dot com 2011-08-03 
15:26:57 UTC ---
Used compiler:

Target: x86_64-unknown-linux-gnu
Thread model: posix
gcc version 4.7.0 20110802 (experimental) (GCC)


[Bug tree-optimization/49963] [4.7 Regression] ICE: in abs_hwi, at hwint.c:108

2011-08-03 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49963

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.08.03 15:26:26
 CC||paolo.carlini at oracle dot
   ||com, rth at gcc dot
   ||gnu.org, spop at gcc dot
   ||gnu.org
   Target Milestone|--- |4.7.0
Summary|ICE: in abs_hwi, at |[4.7 Regression] ICE: in
   |hwint.c:108 |abs_hwi, at hwint.c:108
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-08-03 
15:26:26 UTC ---
Well - as I said.  Here we go.

Please fix :P


[Bug tree-optimization/49963] [4.7 Regression] ICE: in abs_hwi, at hwint.c:108

2011-08-03 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49963

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-08-03 
15:27:36 UTC ---
Probably fails on any 32bit HWI platform.


[Bug c/49966] New: gcc.c-torture/execute/pr45034.c execution timeouts

2011-08-03 Thread howarth at nitro dot med.uc.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49966

   Summary: gcc.c-torture/execute/pr45034.c execution timeouts
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: howa...@nitro.med.uc.edu


At r177224  as well as in current gcc trunk, the
gcc.c-torture/execute/pr45034.c execution tests are timing out on
x86_64-apple-darwin11 at -m32 and -m64...

WARNING: program timed out.
FAIL: gcc.c-torture/execute/pr45034.c execution,  -O2 
WARNING: program timed out.
FAIL: gcc.c-torture/execute/pr45034.c execution,  -O3 -fomit-frame-pointer 
WARNING: program timed out.
FAIL: gcc.c-torture/execute/pr45034.c execution,  -O3 -fomit-frame-pointer
-funroll-loops 
WARNING: program timed out.
FAIL: gcc.c-torture/execute/pr45034.c execution,  -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions 
WARNING: program timed out.
FAIL: gcc.c-torture/execute/pr45034.c execution,  -O3 -g 
WARNING: program timed out.
FAIL: gcc.c-torture/execute/pr45034.c execution,  -Os 
WARNING: program timed out.
FAIL: gcc.c-torture/execute/pr45034.c execution,  -O2 -flto
-flto-partition=none 
WARNING: program timed out.
FAIL: gcc.c-torture/execute/pr45034.c execution,  -O2 -flto


[Bug bootstrap/44959] [4.5 Regression] bootstrap failed at Comparing stages 2 and 3

2011-08-03 Thread htl10 at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44959

--- Comment #12 from Hin-Tak Leung htl10 at users dot sourceforge.net 
2011-08-03 15:29:50 UTC ---
(In reply to comment #11)
 Did you use an absolute path for the source dir?  There have been
 problems with relative paths in the past.

Tried absolute path with 4.6.1, and compilation finishes alright.

cd /home/htl10/tmp-build
tar jxpvf
../sources/www.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-4.6.1/gcc-4.6.1.tar.bz2
mkdir gcc-461-obj
cd gcc-461-obj
CONFIG_SHELL=/usr/local/bin/bash /home/htl10/tmp-build/gcc-4.6.1/configure 
CONFIG_SHELL=/usr/local/bin/bash /usr/local/bin/make

---

I am running make -k check at the moment but will retry 4.5.3/4.6.0 afterwards.
Note that 4.4.6 fails even with absolute path at a later place.
(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40947#c14)

So I can probably say this bug was fixed with 4.6.1.


[Bug c/49966] gcc.c-torture/execute/pr45034.c execution timeouts

2011-08-03 Thread howarth at nitro dot med.uc.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49966

--- Comment #1 from Jack Howarth howarth at nitro dot med.uc.edu 2011-08-03 
15:31:28 UTC ---
Created attachment 24904
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24904
preprocessed source file for gcc.c-torture/execute/pr45034.c on
x86_64-apple-darwin11

Generated with...

/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/xgcc
-B/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/
/sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20110803/gcc/testsuite/gcc.c-torture/execute/pr45034.c
-w -O2 -lm -m32 -o
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/testsuite/gcc/pr45034.x2
--save-temps


[Bug bootstrap/44959] [4.5 Regression] bootstrap failed at Comparing stages 2 and 3

2011-08-03 Thread htl10 at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44959

Hin-Tak Leung htl10 at users dot sourceforge.net changed:

   What|Removed |Added

  Known to work||4.6.1

--- Comment #13 from Hin-Tak Leung htl10 at users dot sourceforge.net 
2011-08-03 15:32:31 UTC ---
adding 4.6.1 known to work. pending retrying 4.5.3/4.6.0


[Bug c/49966] gcc.c-torture/execute/pr45034.c execution timeouts

2011-08-03 Thread howarth at nitro dot med.uc.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49966

--- Comment #2 from Jack Howarth howarth at nitro dot med.uc.edu 2011-08-03 
15:32:57 UTC ---
Created attachment 24905
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24905
assembly file for gcc.c-torture/execute/pr45034.c on x86_64-apple-darwin11 at
-O2

Created with...

 /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/xgcc
-B/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/
/sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20110803/gcc/testsuite/gcc.c-torture/execute/pr45034.c
-w -O2 -lm -m32 -o
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/testsuite/gcc/pr45034.x2
--save-temps


[Bug libgcj/40947] Invalid flag usage: Wl,-rpath, -Wx,-option must appear after -_SYSTYPE_SVR4

2011-08-03 Thread htl10 at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40947

Hin-Tak Leung htl10 at users dot sourceforge.net changed:

   What|Removed |Added

  Known to work||4.6.1

--- Comment #16 from Hin-Tak Leung htl10 at users dot sourceforge.net 
2011-08-03 15:38:30 UTC ---
(In reply to comment #15)

  Invalid flag usage: Wl,-rpath, -Wx,-option must appear after -_SYSTYPE_SVR4 
 

 What I do see is that if you add some -W option to ld, you get exactly
 the message you observe.  E.g.

That's stating the obvious... it is essentially what the error message is
complaining ('flags must be ordered in some way)

 Do you happen to have some environment variable set to -Wsomething?
 Though I have found no hint that ld would check for this, it's a
 possibility.

No I don't - just tried export |grep W . In any case, 4.6.1 does not show this
problem, so it seems to be fixed in 4.6.1 somehow; and it is *not*
full/relative path related.


[Bug libgcj/40947] Invalid flag usage: Wl,-rpath, -Wx,-option must appear after -_SYSTYPE_SVR4

2011-08-03 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40947

--- Comment #17 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE 2011-08-03 15:42:46 UTC ---
  Invalid flag usage: Wl,-rpath, -Wx,-option must appear after 
  -_SYSTYPE_SVR4 

 What I do see is that if you add some -W option to ld, you get exactly
 the message you observe.  E.g.

 That's stating the obvious... it is essentially what the error message is
 complaining ('flags must be ordered in some way)

Not really: there's no documented -_SYSTYPE_SVR4 flag, and ld doesn't
accept such a flag at all.  The error message is sort of nonsensical.

 Do you happen to have some environment variable set to -Wsomething?
 Though I have found no hint that ld would check for this, it's a
 possibility.

 No I don't - just tried export |grep W . In any case, 4.6.1 does not show this
 problem, so it seems to be fixed in 4.6.1 somehow; and it is *not*
 full/relative path related.

Still really strange: I've never seen such a ld message before, building
gcc or otherwise.

Anyway, great that it works for you now.

Rainer


[Bug target/49781] [x32] Unnecessary lea in x32 mode

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781

--- Comment #11 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 15:44:59 
UTC ---
(In reply to comment #10)
 This additional patch prevents zero_extend when we deal with
 wider-than-word-size moves.  These moves need offsetable_operand, which
 zero_extend (...) isn't.
 
 Index: i386.c
 ===
 --- i386.c(revision 177281)
 +++ i386.c(working copy)
 @@ -11681,6 +11689,10 @@ ix86_legitimate_address_p (enum machine_
rtx base, index, disp;
HOST_WIDE_INT scale;
 
 +  if (GET_CODE (addr) == ZERO_EXTEND
 +   GET_MODE_SIZE (mode)  UNITS_PER_WORD)
 +  return false;
 +
if (ix86_decompose_address (addr, parts) = 0)
  /* Decomposition failed.  */
  return false;

gcc.dg/torture/pr47744-2.c compiled with

-mx32 -O3 -std=gnu99 -ftree-vectorize -funroll-loops

generates codes  like

leal(%rax,%r9), %r12d
leal(%rax,%rdi), %r10d
mov%r12d, %edx
movq(%r12d), %rbp
movq8(%rdx), %rdx
movq(%r12d), %rax

Many leal aren't necessary.


[Bug tree-optimization/49963] [4.7 Regression] ICE: in abs_hwi, at hwint.c:108

2011-08-03 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49963

--- Comment #3 from Paolo Carlini paolo.carlini at oracle dot com 2011-08-03 
15:45:06 UTC ---
Eh, my way of fixing it would be removing the assert ;) Seriously, too bad, I
can try to look a bit into it but help is welcome of course, I don't think the
project wants to rely on my judgment about this vs 49914...


[Bug libstdc++/1773] __cplusplus defined to 1, should be 199711L

2011-08-03 Thread marc.glisse at normalesup dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773

--- Comment #103 from Marc Glisse marc.glisse at normalesup dot org 
2011-08-03 15:52:09 UTC ---
(In reply to comment #102)
 What would help enormously for this would be a complete justification
 for the individual fixes:

Of course. I tried to keep the fixincludes to the minimum.

One fixes the issue with getc/getchar explained above.

One removes the extern C++ overloads of bsearch/qsort because of PR 2316 :
Solaris is right to have those, but most compilers (wrongly) don't consider
linkage (C vs C++) as part of the type and thus to them Solaris is defining the
same function twice.

One wraps the declarations of pow(*,int) with #ifdef so that they remain
available in C++03 (Solaris is right to have them, section 26.5.6 of the
standard) but they disappear in C++0X (to match section 26.8.9 of N3291).

The first 2 are necessary. I believe the last one is not required (it should
just cause one minor bug in C++0X) and can be reconsidered later if you prefer.

I haven't tested the version of the fixinclude patch attached to the bug, I was
going to do that once I get access to a Solaris 10 (we have one, but it takes a
while to register so I can use it). I wrote the patch on S11, so I also wanted
to get a look at the S10 headers to check for differences.

   In such a case, it will be easier get Oracle's attention so the issue
   is also fixed upstream.(If only C++ 2011, it might be a bit of a
   tougher ride.)

I guess Oracle will implement C++2011 at some point, no need to push them. The
libstdc++ headers will need adjusting when that happens.

The getc issue is worth reporting upstream though.

 * If this is a libstdc++ requirement not currently demanded by a
   standard, would there be an alternative way to fix this inside
   libstdc++?  The reason I'm asking is that the OS headers tend to be a
   moving target, and you may have to keep updating the fix to keep it
   working.

I completely agree with this, but it looks hard without fixinclude.

Note that I am not a fixinclude expert and it is possible the fixes could be
written in a less fragile way. And I think one c_fix_arg is supposed to be
select instead.


[Bug target/49781] [x32] Unnecessary lea in x32 mode

2011-08-03 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781

--- Comment #12 from Uros Bizjak ubizjak at gmail dot com 2011-08-03 16:08:47 
UTC ---
(In reply to comment #11)

 gcc.dg/torture/pr47744-2.c compiled with
 
 -mx32 -O3 -std=gnu99 -ftree-vectorize -funroll-loops
 
 generates codes  like
 
 leal(%rax,%r9), %r12d
 leal(%rax,%rdi), %r10d
 mov%r12d, %edx
 movq(%r12d), %rbp
 movq8(%rdx), %rdx
 movq(%r12d), %rax
 
 Many leal aren't necessary.

This is the tradeof for using offsetable address for DWI operands.


[Bug target/49781] [x32] Unnecessary lea in x32 mode

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781

--- Comment #13 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 16:18:45 
UTC ---
(In reply to comment #10)
 
 This additional patch prevents zero_extend when we deal with
 wider-than-word-size moves.  These moves need offsetable_operand, which
 zero_extend (...) isn't.
 
 Index: i386.c
 ===
 --- i386.c(revision 177281)
 +++ i386.c(working copy)
 @@ -11681,6 +11689,10 @@ ix86_legitimate_address_p (enum machine_
rtx base, index, disp;
HOST_WIDE_INT scale;
 
 +  if (GET_CODE (addr) == ZERO_EXTEND
 +   GET_MODE_SIZE (mode)  UNITS_PER_WORD)
 +  return false;
 +
if (ix86_decompose_address (addr, parts) = 0)
  /* Decomposition failed.  */
  return false;


Doesn't work. I got

FAIL: gcc.dg/graphite/pr35356-2.c (internal compiler error)
FAIL: gcc.dg/graphite/pr35356-2.c (test for excess errors)
FAIL: libgomp.fortran/omp_parse4.f90  -Os  (internal compiler error)
FAIL: libgomp.fortran/omp_parse4.f90  -Os  (test for excess errors)
FAIL: gfortran.dg/gomp/crayptr5.f90  -O  (internal compiler error)
FAIL: gfortran.dg/gomp/crayptr5.f90  -O  (test for excess errors)

so far:

spawn -ignore SIGHUP /export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/
/export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/graphite/pr35356-2.c -O2
-fgraphite-identity -fdump-tree-graphite-all -S -mx32 -o pr35356-2.s^M
/export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/graphite/pr35356-2.c: In
function 'foo':^M
/export/gnu/import/git/gcc-x32/gcc/testsuite/gcc.dg/graphite/pr35356-2.c:17:1:
internal compiler error: Segmentation fault^M
Please submit a full bug report,^M
with preprocessed source if appropriate.^M
See http://gcc.gnu.org/bugs.html for instructions.^M
compiler exited with status 1


[Bug c++/49949] wrong sign for product of complexdouble and double with -O2

2011-08-03 Thread begovic79 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49949

--- Comment #2 from Ilker R Capoglu begovic79 at gmail dot com 2011-08-03 
16:20:53 UTC ---
(In reply to comment #1)
 An attachment is missing.  Please try to create a small self-contained
 testcase using complex.

Sorry, I think it didn't get uploaded because it was above 1000k. I'll try and
get a smaller .ii file.

Thanks!


[Bug libgomp/49965] libgomp.c++/reduction-4.C and libgomp.c++/task-8.C FAIL on Solaris 11/SPARC

2011-08-03 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49965

--- Comment #2 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE 2011-08-03 16:26:45 UTC ---
 --- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2011-08-03 
 15:10:13 UTC ---
 for task-8.C, error is a function on linux, so please replace it by errval
 or err_atomic or similar instead if err doesn't work on Solaris.

Sure: I'd have tested that on Linux/x86_64 before submitting anyway.

 Fur reduction-4.C, perhaps Solaris long double handling is broken?  The

Not in general :-)

 testcase doesn't use anything complicated, in *.omp_fn* of the long long/long
 double version the private f is initialized to +Inf, then in some iterations
 set to 9.0 or -2.0 and finally everything is MIN_EXPRed together in a critical
 section.

What I've done is adding a couple of printf's all over
template typename I, typename F void foo (): before the #pragma omp
parallel for, before and after each assignement in the for loop, and
before and after the abort, every time casting the args to long long
resp. long double with matching format strings.  It I initialize i to 0
before the #pragma so I get comparable output, there's no difference in
output between i386-pc-solaris2.10 and sparc-sun-solaris2.11 except for
the abort.

Rainer


[Bug c++/49949] wrong sign for product of complexdouble and double with -O2

2011-08-03 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49949

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2011-08-03 
16:27:23 UTC ---
http://gcc.gnu.org/wiki/A_guide_to_testcase_reduction is useful

if you can't reduce it then using gzip or bzip2 might make it small enough to
attach


[Bug target/49950] GOT relocation for -fPIE is excessive

2011-08-03 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49950

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2011-08-03 
16:29:48 UTC ---
default_binds_local_p_1 has:
  /* Uninitialized COMMON variable may be unified with symbols
 resolved from other modules.  */
  else if (DECL_COMMON (exp)
!resolved_locally
(DECL_INITIAL (exp) == NULL
   || DECL_INITIAL (exp) == error_mark_node))
local_p = false;

Now, it depends on what the callers expect.  If they want to figure out if the
decl can't be interposed by other library etc., then the above lines are
unnecessary, but if it wants to find out e.g. if it can trust DECL_INITIAL or
lack thereof of the DECL etc., then the above is needed.  E.g. we use
targetm.binds_local_p to find out if anchoring should be used, for commons it
certainly shouldn't be.


[Bug c++/49949] wrong sign for product of complexdouble and double with -O2

2011-08-03 Thread begovic79 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49949

--- Comment #4 from Ilker R Capoglu begovic79 at gmail dot com 2011-08-03 
16:32:47 UTC ---
(In reply to comment #3)
 http://gcc.gnu.org/wiki/A_guide_to_testcase_reduction is useful
 
 if you can't reduce it then using gzip or bzip2 might make it small enough to
 attach

I actually read the instructions very carefully and managed to go through a lot
of it. The problem is that (a) I'm not so familiar with the internals of the
blitz++ library to prune out the crud effectively (b) the STL headers are
buried so deep into blitz++ that it takes a blitz++ developer to take them out.

I'll try to gzip the file and resubmit, though.


[Bug c++/49949] wrong sign for product of complexdouble and double with -O2

2011-08-03 Thread begovic79 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49949

--- Comment #5 from Ilker R Capoglu begovic79 at gmail dot com 2011-08-03 
16:34:31 UTC ---
Created attachment 24906
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24906
The preprocessed file with the STL and blitz++ headers. (bzip2'd)


[Bug libgomp/49965] libgomp.c++/reduction-4.C and libgomp.c++/task-8.C FAIL on Solaris 11/SPARC

2011-08-03 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49965

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-08-03 
16:37:36 UTC ---
So what values it printed?  Did it print -2.0 and 9.0 in some iterations?
The final merging is done in a critical section between GOMP_atomic_start and
GOMP_atomic_end, perhaps you can put a breakpoint in there and watch how the
values are merged using the MIN_EXPR.
Can you reproduce the failure with OMP_NUM_THREADS=1 BTW?


[Bug target/49781] [x32] Unnecessary lea in x32 mode

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781

--- Comment #14 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 16:47:09 
UTC ---
Created attachment 24907
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24907
A testcase

[hjl@gnu-33 delta]$
/export/build/gnu/gcc-x32-test/release/usr/gcc-4.7.0-x32/bin/gcc -mx32  
-std=gnu99 -fgnu89-inline -O2-S testcase.c

testcase.c:634:2: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.


[Bug c++/49967] New: The -static-libstdc++ does not work on HP-UX (IA64 B.11.23, probably others)

2011-08-03 Thread jvb at cyberscience dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49967

   Summary: The -static-libstdc++ does not work on HP-UX (IA64
B.11.23, probably others)
   Product: gcc
   Version: 4.6.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: j...@cyberscience.com
  Host: HP-UX IA64
Target: HP-UX IA64


The -static-libstdc++ option is silently ignored on HP-IX, IA64 platform.

The reason for this seems to be that g++spec.c relies on HAVE_LD_STATIC_DYNAMIC
from auto-host.h, and if this is not set silently fails to implement
-static-libstdc++.

The HP linker does have options to implement HAVE_LD_STATIC_DYNAMIC, but
configure has not detected them. Presumably this is because they are not the
usual -Bstatic and -Bdynamic, the HP options are -aarchive and -ashared_archive
(not -ashared which disables archive libs completely). Changing auto-host.h to
use:

  #define HAVE_LD_STATIC_DYNAMIC 1
  #define LD_DYNAMIC_OPTION -ashared_archive
  #define LD_STATIC_OPTION -aarchive

resolves the issue, but of course is not the right fix since this file is
generated. So, this is really a configuration time issue.

As an additional fix though, I would really expect g++ to error or warn if
-static-libstdc++ can't be implemented, instead of silently ignoring. Also it
could provide the archive name to the linker in place of -lstdc++ for systems
where HAVE_LD_STATIC_DYNAMIC really doesn't exist - but possibly if this were
fixed for HP there might not be any systems with this restriction.


[Bug target/49781] [x32] Unnecessary lea in x32 mode

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49781

--- Comment #15 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 16:49:12 
UTC ---
(In reply to comment #13)
 (In reply to comment #10)
  
  This additional patch prevents zero_extend when we deal with
  wider-than-word-size moves.  These moves need offsetable_operand, which
  zero_extend (...) isn't.
  
  Index: i386.c
  ===
  --- i386.c(revision 177281)
  +++ i386.c(working copy)
  @@ -11681,6 +11689,10 @@ ix86_legitimate_address_p (enum machine_
 rtx base, index, disp;
 HOST_WIDE_INT scale;
  
  +  if (GET_CODE (addr) == ZERO_EXTEND
  +   GET_MODE_SIZE (mode)  UNITS_PER_WORD)
  +  return false;
  +
 if (ix86_decompose_address (addr, parts) = 0)
   /* Decomposition failed.  */
   return false;
 
 
 Doesn't work. I got
 
 FAIL: gcc.dg/graphite/pr35356-2.c (internal compiler error)
 FAIL: gcc.dg/graphite/pr35356-2.c (test for excess errors)
 FAIL: libgomp.fortran/omp_parse4.f90  -Os  (internal compiler error)
 FAIL: libgomp.fortran/omp_parse4.f90  -Os  (test for excess errors)
 FAIL: gfortran.dg/gomp/crayptr5.f90  -O  (internal compiler error)
 FAIL: gfortran.dg/gomp/crayptr5.f90  -O  (test for excess errors)

Total regressions:

FAIL: gcc.c-torture/compile/2717-1.c  -Os  (internal compiler error)
FAIL: gcc.c-torture/compile/2717-1.c  -Os  (test for excess errors)
FAIL: gcc.c-torture/execute/builtins/strcat.c compilation,  -O1  (internal
compiler error)
FAIL: gcc.c-torture/unsorted/xdi.c,  -O1   (internal compiler error)
FAIL: gcc.dg/graphite/pr35356-2.c (internal compiler error)
FAIL: gcc.dg/graphite/pr35356-2.c (test for excess errors)
FAIL: gcc.dg/torture/pr45636.c  -O1  (internal compiler error)
FAIL: gcc.dg/torture/pr45636.c  -O1  (test for excess errors)
FAIL: gfortran.dg/alloc_comp_assign_4.f90  -O1  (internal compiler error)
FAIL: gfortran.dg/alloc_comp_assign_4.f90  -O1  (test for excess errors)
FAIL: gfortran.dg/alloc_comp_assign_4.f90  -O2  (internal compiler error)
FAIL: gfortran.dg/alloc_comp_assign_4.f90  -O2  (test for excess errors)
FAIL: gfortran.dg/alloc_comp_assign_4.f90  -Os  (internal compiler error)
FAIL: gfortran.dg/alloc_comp_assign_4.f90  -Os  (test for excess errors)
FAIL: gfortran.dg/bounds_check_array_ctor_1.f90  -O1  (internal compiler error)
FAIL: gfortran.dg/bounds_check_array_ctor_1.f90  -O1  (test for excess errors)
FAIL: gfortran.dg/bounds_check_array_ctor_6.f90  -O1  (internal compiler error)
FAIL: gfortran.dg/bounds_check_array_ctor_6.f90  -O1  (test for excess errors)
FAIL: gfortran.dg/bounds_check_array_ctor_8.f90  -O1  (internal compiler error)
FAIL: gfortran.dg/bounds_check_array_ctor_8.f90  -O1  (test for excess errors)
FAIL: gfortran.dg/character_array_constructor_1.f90  -O1  (internal compiler
error)
FAIL: gfortran.dg/character_array_constructor_1.f90  -O1  (test for excess
errors)
FAIL: gfortran.dg/char_expr_3.f90  -O1  (internal compiler error)
FAIL: gfortran.dg/char_expr_3.f90  -O1  (test for excess errors)
FAIL: gfortran.dg/char_length_3.f90  -O  (internal compiler error)
FAIL: gfortran.dg/char_length_3.f90  -O  (test for excess errors)
FAIL: gfortran.dg/extends_1.f03  -O1  (internal compiler error)
FAIL: gfortran.dg/extends_1.f03  -O1  (test for excess errors)
FAIL: gfortran.dg/g77/7388.f  -O1  (internal compiler error)
FAIL: gfortran.dg/g77/7388.f  -O1  (test for excess errors)
FAIL: gfortran.dg/gomp/crayptr5.f90  -O  (internal compiler error)
FAIL: gfortran.dg/gomp/crayptr5.f90  -O  (test for excess errors)
FAIL: gfortran.dg/namelist_66.f90  -O2  (internal compiler error)
FAIL: gfortran.dg/namelist_66.f90  -O2  (test for excess errors)
FAIL: gfortran.dg/proc_ptr_22.f90  -O2  (internal compiler error)
FAIL: gfortran.dg/proc_ptr_22.f90  -O2  (test for excess errors)
FAIL: gfortran.dg/proc_ptr_22.f90  -O3 -fomit-frame-pointer  (internal compiler
error)
FAIL: gfortran.dg/proc_ptr_22.f90  -O3 -fomit-frame-pointer  (test for excess
errors)
FAIL: gfortran.dg/proc_ptr_22.f90  -O3 -g  (internal compiler error)
FAIL: gfortran.dg/proc_ptr_22.f90  -O3 -g  (test for excess errors)
FAIL: gfortran.dg/proc_ptr_comp_12.f90  -O2  (internal compiler error)
FAIL: gfortran.dg/proc_ptr_comp_12.f90  -O2  (test for excess errors)
FAIL: gfortran.dg/proc_ptr_comp_12.f90  -O3 -fomit-frame-pointer  (internal
compiler error)
FAIL: gfortran.dg/proc_ptr_comp_12.f90  -O3 -fomit-frame-pointer  (test for
excess errors)
FAIL: gfortran.dg/proc_ptr_comp_12.f90  -O3 -g  (internal compiler error)
FAIL: gfortran.dg/proc_ptr_comp_12.f90  -O3 -g  (test for excess errors)
FAIL: gfortran.fortran-torture/execute/where_11.f90,  -Os  (internal compiler
error)
FAIL: gfortran.fortran-torture/execute/where_2.f90,  -Os  (internal compiler
error)
FAIL: libgomp.fortran/omp_parse4.f90  -Os  (internal compiler error)
FAIL: libgomp.fortran/omp_parse4.f90  -Os  (test for excess errors)


[Bug libgomp/49965] libgomp.c++/reduction-4.C and libgomp.c++/task-8.C FAIL on Solaris 11/SPARC

2011-08-03 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49965

--- Comment #4 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE 2011-08-03 16:50:27 UTC ---
 --- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-08-03 
 16:37:36 UTC ---
 So what values it printed?  Did it print -2.0 and 9.0 in some iterations?

Here's the complete output:

i = 0: j = -1, f = 1024
i = 1: f = Inf
i = 2: j = -2147483648, f = Inf
i = 1: f = -2
i = 2: j = 8, f = Inf
i = 3
i = 2: j = 8, f = 9
i = 0: j = -2147483648
i = 0: j = -16
i = 0: j = 8, f = -2

i = 0: j = -1, f = 1024
i = 1: f = Inf
i = 1: f = -2
i = 3
i = 2: j = -2147483648, f = Inf
i = 2: j = 8, f = Inf
i = 2: j = 8, f = 9
i = 0: j = -2147483648
i = 0: j = -16
i = 0: j = 8, f = -2

i = 0: j = -1, f = 1024
i = 1: f = Inf
i = 1: f = -2
i = 3
i = 2: j = -9223372036854775808, f = Inf
i = 2: j = 8, f = Inf
i = 2: j = 8, f = 9
i = 0: j = -9223372036854775808
i = 0: j = -16
i = 0: j = 8, f = Inf

 The final merging is done in a critical section between GOMP_atomic_start and
 GOMP_atomic_end, perhaps you can put a breakpoint in there and watch how the
 values are merged using the MIN_EXPR.

I've missed the right call so far.  Will give it another try tomorrow.

 Can you reproduce the failure with OMP_NUM_THREADS=1 BTW?

Yes, the failure is the same, just with

i = 0: j = -1, f = 1024
i = 0: j = -9223372036854775808
i = 0: j = -16
i = 1: f = Inf
i = 1: f = -2
i = 2: j = -16, f = -2
i = 2: j = 8, f = -2
i = 2: j = 8, f = -2
i = 3
i = 0: j = 8, f = 1024
Abort

Rainer


[Bug web/49935] Upgrade GCC Bugzilla to 3.6.6

2011-08-03 Thread LpSolit at netscape dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49935

Frédéric Buclin LpSolit at netscape dot net changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.08.03 16:54:20
 AssignedTo|unassigned at gcc dot   |LpSolit at netscape dot net
   |gnu.org |
 Ever Confirmed|0   |1


[Bug middle-end/49968] New: ICE in calls.c:3141 / assert after emit_stack_restore

2011-08-03 Thread uweigand at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49968

   Summary: ICE in calls.c:3141 / assert after emit_stack_restore
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: uweig...@gcc.gnu.org
CC: r...@gcc.gnu.org
Target: spu-elf


I'm seeing ICEs in calls.c:3141 on spu-elf after this patch went in:
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg00075.html

One test case showing this problem is:
gcc.c-torture/compile/20030224-1.c

The problem here is that SPU's restore_stack_block generates insn
sequences that do not terminate in a SET of stack_pointer_rtx,
see this for further discussion:
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg00326.html


[Bug middle-end/49968] ICE in calls.c:3141 / assert after emit_stack_restore

2011-08-03 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49968

Richard Henderson rth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.08.03 17:18:39
 AssignedTo|unassigned at gcc dot   |rth at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.7.0
 Ever Confirmed|0   |1

--- Comment #1 from Richard Henderson rth at gcc dot gnu.org 2011-08-03 
17:18:39 UTC ---
Mine.


[Bug middle-end/49969] New: not vectorized: data ref analysis failed

2011-08-03 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49969

   Summary: not vectorized: data ref analysis failed
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bur...@gcc.gnu.org
CC: i...@gcc.gnu.org, rguent...@suse.de


The following program does not vectorize. With Intel's ifort one gets the
message:

  PERMUTED LOOP WAS VECTORIZED

while GCC just prints:

test.f90:6: note: not vectorized: data ref analysis failed D.1566_33 =
*iz_32(D)[D.1565_31];

test.f90:7: note: not vectorized: data ref analysis failed D.1566_33 =
*iz_32(D)[D.1565_31];

test.f90:2: note: vectorized 0 loops in function.


In case of GCC, it does not depend on the loop order - permuting does not
change anything. Also it is independent of the patch to PR 49957.


! From Polyhedron's ac.f90, line 746
  SUBROUTINE SUSCEP(L,Iz,Dsus)
  INTEGER L , Iz(L,L) , iznum
  DOUBLE PRECISION Dsus
  iznum = 0
  DO iy = 1 , L
DO ix = 1 , L
  iznum = iznum + Iz(iy,ix)
ENDDO
  ENDDO
  Dsus = DBLE(iznum)
  Dsus = Dsus*Dsus
  Dsus = Dsus/(L*L)
  END


[Bug bootstrap/49964] Bootstrap failed with AVX turned on

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49964

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.08.03 17:37:53
 CC||rth at gcc dot gnu.org
   Target Milestone|--- |4.7.0
 Ever Confirmed|0   |1

--- Comment #2 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 17:37:53 
UTC ---
It is caused by revision 177218:

http://gcc.gnu.org/ml/gcc-cvs/2011-08/msg00228.html

On Linux/ia32, adding -march=corei7-avx caused:

[hjl@gnu-snb-1 src]$ /export/gnu/import/rrs-bootstrap/177218/bld/./gcc/xgcc
-shared-libgcc -B/export/gnu/import/rrs-bootstrap/177218/bld/./gcc -nostdinc++
-L/export/gnu/import/rrs-bootstrap/177218/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/src
-L/export/gnu/import/rrs-bootstrap/177218/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/src/.libs
-B/export/gnu/import/rrs-bootstrap/177218/usr/x86_64-unknown-linux-gnu/bin/
-B/export/gnu/import/rrs-bootstrap/177218/usr/x86_64-unknown-linux-gnu/lib/
-isystem
/export/gnu/import/rrs-bootstrap/177218/usr/x86_64-unknown-linux-gnu/include
-isystem
/export/gnu/import/rrs-bootstrap/177218/usr/x86_64-unknown-linux-gnu/sys-include
-m32
-I/export/gnu/import/rrs-bootstrap/177218/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/export/gnu/import/rrs-bootstrap/177218/bld/x86_64-unknown-linux-gnu/32/libstdc++-v3/include
-I/export/gnu/import/rrs-bootstrap/177218/src/libstdc++-v3/libsupc++
-fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual
-fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-frandom-seed=functexcept.lo -g -O2 -D_GNU_SOURCE -m32 -std=gnu++0x -c
../../../../../src/libstdc++-v3/src/functexcept.cc  -fPIC -DPIC -S
-march=corei7-avx
../../../../../src/libstdc++-v3/src/functexcept.cc: In function ‘void
std::__throw_system_error(int)’:
../../../../../src/libstdc++-v3/src/functexcept.cc:106:62: internal compiler
error: in fixup_args_size_notes, at expr.c:3586
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
[hjl@gnu-snb-1 src]$


[Bug c/49923] __attirubte__((packed)) on ARM is sometimes dropped

2011-08-03 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49923

--- Comment #5 from Martin Jambor jamborm at gcc dot gnu.org 2011-08-03 
17:39:05 UTC ---
Søren, can you please verify this patch fixes the problem for you?
It's based on trunk but should apply well to the 4.6 branch too.
Thanks.

Index: src/gcc/tree-sra.c
===
--- src.orig/gcc/tree-sra.c
+++ src/gcc/tree-sra.c
@@ -3688,6 +3688,9 @@ access_precludes_ipa_sra_p (struct acces
   || gimple_code (access-stmt) == GIMPLE_ASM))
 return true;

+  if (tree_non_mode_aligned_mem_p (access-expr))
+return true;
+
   return false;
 }


[Bug libfortran/49970] New: make prefix=... install doesn't work

2011-08-03 Thread jimis at gmx dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49970

   Summary: make prefix=... install doesn't work
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libfortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: ji...@gmx.net


On a multilib x86_64 config, I tried doing make prefix=$HOME/mydir install.
Installation failed in directory x86_64-unknown-linux-gnu/32/libgfortran/
because it tried writing to some dir under /usr/local. Looking into the
generated Makefile in that path I can see that the default prefix, /usr/local,
was hardcoded in several points.

Shouldn't it be ${prefix} instead of /usr/local?


[Bug middle-end/49968] ICE in calls.c:3141 / assert after emit_stack_restore

2011-08-03 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49968

--- Comment #2 from Richard Henderson rth at gcc dot gnu.org 2011-08-03 
18:00:21 UTC ---
Created attachment 24908
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24908
proposed patch

I believe this will solve the problem.


[Bug middle-end/49968] ICE in calls.c:3141 / assert after emit_stack_restore

2011-08-03 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49968

Richard Henderson rth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|WAITING


[Bug bootstrap/49964] Bootstrap failed with AVX turned on

2011-08-03 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49964

Richard Henderson rth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

--- Comment #3 from Richard Henderson rth at gcc dot gnu.org 2011-08-03 
18:02:43 UTC ---
Mine.


[Bug fortran/49638] [OOP] length parameter is ignored when overriding type bound character functions with constant length.

2011-08-03 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49638

--- Comment #4 from janus at gcc dot gnu.org 2011-08-03 18:36:55 UTC ---
(In reply to comment #3)
 A check for different ranks can be added like this:

This will reject the following variant of the original test case, which is
accepted up to now:


module world
  implicit none
  type :: world_1
   contains
 procedure, nopass :: string = w1_string
  end type
  type, extends(world_1)::world_2
   contains
 procedure, nopass :: string = w2_string
  end type
contains
  function w1_string()
integer :: w1_string
w1_string = 1
  end function
  function w2_string()
integer,dimension(2) ::w2_string
w2_string = 2
  end function
end module

program hello
  use world
  implicit none
  type(world_1)::w1
  type(world_2)::w2
  print *,hello world: hello,w1%string()
  print *,hello world2: hello,w2%string()
end program


[Bug libfortran/49970] make prefix=... install doesn't work

2011-08-03 Thread kargl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49970

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 CC||kargl at gcc dot gnu.org

--- Comment #1 from kargl at gcc dot gnu.org 2011-08-03 18:49:11 UTC ---
Why do you think that this will work?

No where on http://gcc.gnu.org/install/ is the
form make prefix=... documented.

If you want to install gcc into a directory other
than /usr/local, then use 'path_to_gcc_src/configure
--prefix=where_gcc_will_live'.


[Bug tree-optimization/49948] ICE with -ftree-parallelize-loops: address taken, but ADDRESSABLE bit not set

2011-08-03 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49948

--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2011-08-03 
18:49:43 UTC ---
Author: jakub
Date: Wed Aug  3 18:49:40 2011
New Revision: 177291

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=177291
Log:
PR tree-optimization/49948
* gimple.c (walk_stmt_load_store_addr_ops): Walk CONSTRUCTOR elements.

* gcc.dg/pr49948.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/pr49948.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/gimple.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/47453] [DR 1214] Various non-conforming behaviors with braced-init-list initialization

2011-08-03 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47453

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.08.03 18:52:08
 AssignedTo|unassigned at gcc dot   |jason at gcc dot gnu.org
   |gnu.org |
Summary|Various non-conforming  |[DR 1214] Various
   |behaviors with  |non-conforming behaviors
   |braced-init-list|with braced-init-list
   |initialization  |initialization
 Ever Confirmed|0   |1


[Bug fortran/49638] [OOP] length parameter is ignored when overriding type bound character functions with constant length.

2011-08-03 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49638

--- Comment #5 from janus at gcc dot gnu.org 2011-08-03 18:53:17 UTC ---
I think in general we may also have to reject differing non-constant string
lengths (at least that's what ifort does), as in:


module world
  implicit none
  type :: world_1
   contains
 procedure, nopass :: string = w1_string
  end type
  type, extends(world_1) :: world_2
   contains
 procedure, nopass :: string = w2_string
  end type
contains
  function w1_string(x)
integer, intent(in) :: x
character(2*x) :: w1_string
w1_string = world
  end function
  function w2_string(x)
integer, intent(in) :: x
character(3*x) :: w2_string
w2_string = world2
  end function
end module

program hello
  use world
  implicit none
  type(world_1)::w1
  type(world_2)::w2
  print *,hello world: hello ,w1%string(3),!
  print *,hello world2: hello ,w2%string(3),!
end program


[Bug tree-optimization/49948] ICE with -ftree-parallelize-loops: address taken, but ADDRESSABLE bit not set

2011-08-03 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49948

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2011-08-03 
18:56:05 UTC ---
Author: jakub
Date: Wed Aug  3 18:56:02 2011
New Revision: 177292

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=177292
Log:
PR tree-optimization/49948
* gimple.c (walk_stmt_load_store_addr_ops): Walk CONSTRUCTOR elements.

* gcc.dg/pr49948.c: New test.

Added:
branches/gcc-4_6-branch/gcc/testsuite/gcc.dg/pr49948.c
Modified:
branches/gcc-4_6-branch/gcc/ChangeLog
branches/gcc-4_6-branch/gcc/gimple.c
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog


[Bug tree-optimization/49963] [4.7 Regression] ICE: in abs_hwi, at hwint.c:108

2011-08-03 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49963

--- Comment #4 from joseph at codesourcery dot com joseph at codesourcery dot 
com 2011-08-03 18:59:33 UTC ---
I think this is a case for a function absu_hwi or similar that returns an 
unsigned HOST_WIDE_INT value.

(Actually it's a case for operating properly on the INTEGER_CSTs or on 
double_ints without being conditional on whether the values pass 
host_integerp, but that's a more complicated fix.)


[Bug libfortran/49970] make prefix=... install doesn't work

2011-08-03 Thread jimis at gmx dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49970

--- Comment #2 from jimis jimis at gmx dot net 2011-08-03 19:01:51 UTC ---
I use it casually for packages that use autotools to configure the build, it
always works fine. And for gcc it has worked for me plenty of times for i386
C-frontend only builds, and till not I've only seen libgfortran failing.

Why it should be supported? Especially for GCC it is very handy, I build the
beast without configuring --prefix at all, and then install someplace. Then I
apply some patch, hit make and only relevant files are compiled, and install
some place elsewhere. If I had to reconfigure with a different --prefix, make
would build many more files, and I'd have to delete various config.cache files
because I reconfigured.

Quote from automake manual: 

All these directory variables have values that start with either ‘${prefix}’ or
‘${exec_prefix}’ unexpanded. This works fine in Makefiles, but it makes these
variables hard to use in configure. This is mandated by the GNU coding
standards, so that the user can run ‘make prefix=/foo install’. The Autoconf
manual has a section with more details on this topic (see Installation
Directory Variables). See also Hard-Coded Install Paths.


[Bug libfortran/49970] make prefix=... install doesn't work

2011-08-03 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49970

--- Comment #3 from joseph at codesourcery dot com joseph at codesourcery dot 
com 2011-08-03 19:03:24 UTC ---
This is a bug in libtool.  See bug 46607.  It will need to be fixed in 
upstream libtool (see bug 46607 comment 10 for what might be the simplest 
approach).


[Bug libfortran/49970] make prefix=... install doesn't work

2011-08-03 Thread sgk at troutmask dot apl.washington.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49970

--- Comment #4 from Steve Kargl sgk at troutmask dot apl.washington.edu 
2011-08-03 19:09:22 UTC ---
On Wed, Aug 03, 2011 at 07:01:55PM +, jimis at gmx dot net wrote:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49970
 
 --- Comment #2 from jimis jimis at gmx dot net 2011-08-03 19:01:51 UTC ---
 I use it casually for packages that use autotools to configure the build, it
 always works fine. And for gcc it has worked for me plenty of times for i386
 C-frontend only builds, and till not I've only seen libgfortran failing.
 
 Why it should be supported? Especially for GCC it is very handy, I build the
 beast without configuring --prefix at all, and then install someplace. Then I
 apply some patch, hit make and only relevant files are compiled, and install
 some place elsewhere. If I had to reconfigure with a different --prefix, make
 would build many more files, and I'd have to delete various config.cache files
 because I reconfigured.

Have you actually read the instead instructions for gcc?
Have you tried the documented method [*]:

make DESTDIR=path-to-rootdir install

[*] I don't know if it works.  If it fails, then you have
bug to report.


[Bug bootstrap/49964] Bootstrap failed with AVX turned on

2011-08-03 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49964

--- Comment #4 from Richard Henderson rth at gcc dot gnu.org 2011-08-03 
19:11:48 UTC ---
It's a bug in the i386 backend:

(call_insn 28 27 136 2 (parallel [
(parallel [
(call (mem:QI (mem/f:SI (plus:SI (reg/f:SI 73 [
__ec$_M_cat_2-_vptr.error_category ])
(const_int 12 [0xc])) [3 MEM[(int
(*__vtbl_ptr_type) () *)D.126512_12 + 12B]+0 S4 A32]) [0
*OBJ_TYPE_REF(D.126513_13;__ec$_M_cat_2-3) S1 A8])
(const_int 12 [0xc]))
(set (reg/f:SI 7 sp)
(plus:SI (reg/f:SI 7 sp)
(const_int 4 [0x4])))
])
(unspec [
(const_int 2 [0x2])
] UNSPEC_CALL_NEEDS_VZEROUPPER)
])
/home/rth/work/gcc/bld/i686-linux/libstdc++-v3/include/system_error:158 480
{*call_pop_vzeroupper}

Note the nested PARALLEL.


[Bug c++/47453] [DR 1214] Various non-conforming behaviors with braced-init-list initialization

2011-08-03 Thread schaub.johannes at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47453

--- Comment #7 from Johannes Schaub schaub.johannes at googlemail dot com 
2011-08-03 19:17:04 UTC ---
(In reply to comment #6)

  
  You can define it as follows to make it work in both cases
  
  #define PTHREAD_COND_INITIALIZER {}
 
 I cannot define/redefine this value. It's already defined in system headers...

Ah I wasn't aware. You can at least workaround it though.

class cond_variable
{
struct { ::pthread_cond_t cond; } wrapper;

public:
constexpr cond_variable() : wrapper{PTHREAD_COND_INITIALIZER} {}
};


[Bug libfortran/49970] make prefix=... install doesn't work

2011-08-03 Thread jimis at gmx dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49970

--- Comment #5 from jimis jimis at gmx dot net 2011-08-03 19:32:09 UTC ---
DESTDIR is supported just fine, but it is not prefix, it serves different
purposes. In particular it installs in /$DESTDIR/$prefix but installed package
would search libraries in /$prefix. 

joseph: Thanks for pointing me to that bug, hopefully this will be fixed in
libtool, it's much needed functionality at least for me.


[Bug target/43746] -fmerge-constants and -fmerge-all-constants don't work at AVR target

2011-08-03 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43746

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

 CC||schlie at comcast dot net

--- Comment #6 from Georg-Johann Lay gjl at gcc dot gnu.org 2011-08-03 
19:40:32 UTC ---
*** Bug 21018 has been marked as a duplicate of this bug. ***


[Bug middle-end/21018] Initializing string literal data improperly marked frame-relative?, should be readonly static const.

2011-08-03 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21018

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
   Priority|P2  |P3
 CC||gjl at gcc dot gnu.org
 Resolution|WONTFIX |DUPLICATE
   Severity|normal  |enhancement

--- Comment #11 from Georg-Johann Lay gjl at gcc dot gnu.org 2011-08-03 
19:40:32 UTC ---
Setting this as duplicate; not because it's a real duplicate -- the original
message is rather confusing and I can't really depict what it's intention is --
but because the contributors to this PR might be also interestet in PR43746
which touches similar topic like duplicate strings and string merging on AVR
that is addressed here, too.

(In reply to comment #0)
 char s[5] = abcde;
 char t[5] = {'a','b','c','d','e'};

Note that abcde is a string literal containing 6 chars (only 5 are copied)
and the second initializer has length 5 bytes and is not a string.

 resulting tree/rtl:

 showing frame-relative reference to abcde initializing data which is wrong:

 (set (reg:HI 44)
  (symbol_ref/f:HI (*.LC0) [flags 0x2] string_cst 0x160b840))

Note that the /f flag has different meanings depending on where it is attached
to, see http://gcc.gnu.org/viewcvs/trunk/gcc/rtl.h?view=markup

(In reply to comment #6)

 Now, if that macro is called with identical string literals within one
 translation unit, the strings are allocated separately rather than merged
 into a single location.
 
 This behaviour is reproducable as well on the i386 target, so it looks like
 not really related to the avr backend.
 
 [...]
 
 #define PROGMEM __attribute__((__progmem__))
 
 #define PSTR(x) \
 (__extension__({static const char __c[] PROGMEM = (x); __c[0];}))
 
 extern void puts_P(const char *);
 
 void dosomething(void)
 {
 puts_P(PSTR(Hello world!));
 puts_P(PSTR(Hello world!));
 }
 
 Compiling for the avr target yields:
 
 [...]
 .section.progmem.data,a,@progbits
 .type   __c.1473, @object
 .size   __c.1473, 13
 __c.1473:
 .string Hello world!
 .type   __c.1471, @object
 .size   __c.1471, 13
 __c.1471:
 .string Hello world!

 
 Compiling the same file for the i386 target also shows two copies of the
 string literal: [...]

Problem is not the duplicate string literals it's the missing section flags
like aMS for mergeable strings and binutils would take care of this.

This is rooted in the way avr backend up to now implements progem attribute,
i.e. is simply bangs a section .progmem against a decl without caring for the
kind of data. This is not hard to change, but it has to be implemented.

For constants in .rodata string merging was achieved wihout effort by cleaning
up the avr backend.  Notice that .rodata is still in RAM but named .rodata now
and not mapped to .data as in = 4.6.

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


[Bug fortran/49638] [OOP] length parameter is ignored when overriding type bound character functions with constant length.

2011-08-03 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49638

--- Comment #6 from janus at gcc dot gnu.org 2011-08-03 19:41:17 UTC ---
The simple constant-length example in comment #0 can be rejected by extending
the resolve.c part of the patch in comment #3 into:


Index: gcc/fortran/resolve.c
===
--- gcc/fortran/resolve.c(revision 177065)
+++ gcc/fortran/resolve.c(working copy)
@@ -10760,13 +10760,28 @@ check_typebound_override (gfc_symtree* proc, gfc_s
   /* FIXME:  Do more comprehensive checking (including, for instance, the
  rank and array-shape).  */
   gcc_assert (proc_target-result  old_target-result);
-  if (!gfc_compare_types (proc_target-result-ts,
-  old_target-result-ts))
+  if (!compare_type_rank (proc_target-result, old_target-result))
 {
   gfc_error ('%s' at %L and the overridden FUNCTION should have
-  matching result types, proc-name, where);
+  matching result types and ranks, proc-name, where);
   return FAILURE;
 }
+
+  if (proc_target-result-ts.type == BT_CHARACTER
+   proc_target-result-ts.u.cl  proc_target-result-ts.u.cl-length
+   proc_target-result-ts.u.cl-length-expr_type == EXPR_CONSTANT
+   old_target-result-ts.u.cl  old_target-result-ts.u.cl 
old_target-result-ts.u.cl-length
+   old_target-result-ts.u.cl-length-expr_type == EXPR_CONSTANT
+   (mpz_cmp (proc_target-result-ts.u.cl-length-value.integer,
+  old_target-result-ts.u.cl-length-value.integer) != 0))
+{
+  gfc_error (Character length mismatch (%ld/%ld) between '%s' at '%L' 
+ and overridden FUNCTION,
+ mpz_get_si (proc_target-ts.u.cl-length-value.integer),
+ mpz_get_si (old_target-ts.u.cl-length-value.integer),
+ proc-name, where);
+  return FAILURE;
+}
 }

   /* If the overridden binding is PUBLIC, the overriding one must not be


[Bug tree-optimization/49772] [4.7 Regression] ICE: in ipa_pta_execute, at tree-ssa-structalias.c:6790 with -fipa-pta

2011-08-03 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49772

--- Comment #3 from Jan Hubicka hubicka at gcc dot gnu.org 2011-08-03 
19:57:06 UTC ---
Hmm, we should never make the cgrpah point to inline variant in this case, so
rest of compilation should go smoothly after the error is output. I don't think
it is what is confusing ipa-pta, especially now when it is run after inlining?

Honza


[Bug tree-optimization/49735] [4.7 Regression] mips64-elf libgcc build fails with apparently infinite recursion.

2011-08-03 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49735

--- Comment #9 from Jan Hubicka hubicka at gcc dot gnu.org 2011-08-03 
20:00:22 UTC ---
Hmm, it looks like recursive_inlining_p predicate broke with presence of
aliases.  I will take a look.


[Bug tree-optimization/49735] [4.7 Regression] mips64-elf libgcc build fails with apparently infinite recursion.

2011-08-03 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49735

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 AssignedTo|unassigned at gcc dot   |hubicka at gcc dot gnu.org
   |gnu.org |

--- Comment #10 from Jan Hubicka hubicka at gcc dot gnu.org 2011-08-03 
20:01:15 UTC ---
Mine, BTW


[Bug middle-end/49500] [4.7 Regression]: gcc.dg/tls/alias-1.c

2011-08-03 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49500

--- Comment #14 from Jan Hubicka hubicka at gcc dot gnu.org 2011-08-03 
20:11:16 UTC ---
It seems that I never submitted the patch. It is posted now.

Honza


[Bug libstdc++/1773] __cplusplus defined to 1, should be 199711L

2011-08-03 Thread andrew at ishiboo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773

Andrew Paprocki andrew at ishiboo dot com changed:

   What|Removed |Added

 CC||andrew at ishiboo dot com

--- Comment #104 from Andrew Paprocki andrew at ishiboo dot com 2011-08-03 
20:17:26 UTC ---
Wow, just got bit by this 10 year old bug on Solaris 10. The following code
correctly errors with Sun's compiler:

#include string.h
int main() { char* foo = strchr(z, 'z'); return 0; }

foo.c, line 2:  Error: Cannot assign const char* to char*.

But under no invocation of g++ does this even print a warning (-Wall -Wextra
-Wcast-qual) because Solaris iso/string_iso.h only declares the return value
'const' when __cplusplus = 199711L.


[Bug fortran/49638] [OOP] length parameter is ignored when overriding type bound character functions with constant length.

2011-08-03 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49638

--- Comment #7 from janus at gcc dot gnu.org 2011-08-03 20:17:49 UTC ---
I wonder whether the right thing to do would be to add a general expression
comparison routine like the one below (just a rough sketch so far).

a) Do we have something like this already? I found gfc_compare_expr in arith.c,
but this does not seem to do quite what we need here (e.g. it only handles
constant expressions, etc).

b) Is it overkill and things can be done in a simpler way?



===
--- gcc/fortran/expr.c(revision 177065)
+++ gcc/fortran/expr.c(working copy)
@@ -255,6 +255,80 @@ gfc_get_iokind_expr (locus *where, io_kind k)
 }


+/* Compare two expressions.  */
+
+gfc_try
+gfc_cmp_expr (gfc_expr *e1, gfc_expr *e2)
+{
+  if (e1 == NULL  e2 == NULL)
+return SUCCESS;
+
+  if (e1-expr_type != e2-expr_type)
+return FAILURE;
+  
+  switch (e1-expr_type)
+{
+case EXPR_CONSTANT:
+  switch (e1-ts.type)
+{
+case BT_INTEGER:
+  if (mpz_cmp (e1-value.integer, e2-value.integer) != 0)
+return FAILURE;
+  break;
+
+case BT_REAL:
+  if (mpfr_cmp (e1-value.real, e2-value.real) != 0)
+return FAILURE;
+  break;
+
+case BT_COMPLEX:
+  if (mpc_cmp (e1-value.complex, e2-value.complex) != 0)
+return FAILURE;
+  break;
+
+case BT_CHARACTER:  /* TODO.  */
+case BT_HOLLERITH:
+case BT_LOGICAL:
+case BT_DERIVED:
+case BT_CLASS:
+  break;
+
+case BT_PROCEDURE:
+case BT_VOID:
+  /* Should never be reached.  */
+case BT_UNKNOWN:
+  gfc_internal_error (gfc_copy_expr(): Bad expr node);
+  /* Not reached.  */
+}
+  break;
+
+case EXPR_VARIABLE:
+  if (strcmp (e1-symtree-n.sym-name, e1-symtree-n.sym-name) != 0)
+return FAILURE;
+
+case EXPR_OP:
+  if (e1-value.op.op != e2-value.op.op)
+return FAILURE;
+  if (gfc_cmp_expr (e1-value.op.op1, e2-value.op.op1) == FAILURE)
+return FAILURE;
+  if (gfc_cmp_expr (e1-value.op.op2, e2-value.op.op2) == FAILURE)
+return FAILURE;
+  break;
+
+case EXPR_FUNCTION:  /* TODO.  */
+case EXPR_ARRAY:
+case EXPR_SUBSTRING:
+case EXPR_COMPCALL:
+case EXPR_PPC:
+case EXPR_STRUCTURE:
+case EXPR_NULL:
+  break;
+}
+
+  return SUCCESS;
+}
+
+


[Bug libstdc++/1773] __cplusplus defined to 1, should be 199711L

2011-08-03 Thread andrew at ishiboo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773

--- Comment #105 from Andrew Paprocki andrew at ishiboo dot com 2011-08-03 
20:26:17 UTC ---
$ uname -a
SunOS sun 5.10 Generic_137111-08 sun4v sparc SUNW,T5240 Solaris
$ CC -V
CC: Sun C++ 5.10 SunOS_sparc 128228-10 2010/08/18
$ g++ -dumpversion
4.5.2
$ cat  foo.cpp
#include string.h
int main() { char* foo = strchr(z, 'z'); return 0; }
$ CC -c foo.cpp
foo.cpp, line 2: Error: Cannot use const char* to initialize char*.
1 Error(s) detected.
$ g++ -std=c++0x -pedantic -Wall -Wextra -Wno-unused -c foo.cpp
$


[Bug tree-optimization/49963] [4.7 Regression] ICE: in abs_hwi, at hwint.c:108

2011-08-03 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49963

--- Comment #5 from Paolo Carlini paolo.carlini at oracle dot com 2011-08-03 
20:29:51 UTC ---
Created attachment 24909
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24909
Draft patch

I'm attaching a patch which tries to implement what Joseph suggests (thanks!).
Essentially, I'm replacing all uses of abs_hwi outside hwint.c itself, besides
three in tree-ssa-math-opts.c which seem correct anyway: the argument is an
HOST_WIDE_INT / 2 or / 3 and the result is passed to a function taking a plain
HOST_WIDE_INT. Type-wise the patch makes a lot of sense to me.

Maybe submitter could test it? I'm sanity checking it on x86_64.


[Bug bootstrap/49964] Bootstrap failed with AVX turned on

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49964

--- Comment #5 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 20:51:22 
UTC ---
Created attachment 24910
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24910
A patch

I am testing this.


[Bug c/49923] __attirubte__((packed)) on ARM is sometimes dropped

2011-08-03 Thread sgh at sgh dot dk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49923

--- Comment #6 from Søren Holm sgh at sgh dot dk 2011-08-03 21:00:06 UTC ---
As  far as my isolated test-case goes the patch works. :D
I will report back after a test on the target tomorrow.


[Bug middle-end/49968] ICE in calls.c:3141 / assert after emit_stack_restore

2011-08-03 Thread uweigand at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49968

--- Comment #3 from Ulrich Weigand uweigand at gcc dot gnu.org 2011-08-03 
21:21:32 UTC ---
The patch did indeed fix the testcase, thanks!

Running a full regression now ...


[Bug fortran/49638] [OOP] length parameter is ignored when overriding type bound character functions with constant length.

2011-08-03 Thread mikael at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49638

Mikael Morin mikael at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mikael at gcc dot gnu.org

--- Comment #8 from Mikael Morin mikael at gcc dot gnu.org 2011-08-03 
21:35:49 UTC ---
(In reply to comment #7)
 I wonder whether the right thing to do would be to add a general expression
 comparison routine like the one below (just a rough sketch so far).
 
 a) Do we have something like this already? I found gfc_compare_expr in 
 arith.c,
 but this does not seem to do quite what we need here (e.g. it only handles
 constant expressions, etc).
 
 b) Is it overkill and things can be done in a simpler way?
 

4.5.7.3 (type-bound procedure overriding) has:
• Either both shall be subroutines or both shall be functions having the same
result characteristics (12.3.3).

12.3.3 (Characteristics of function results):
If a type parameter of a function result or a bound of a function result array
is not a constant expression, the
exact dependence on the entities in the expression is a characteristic


So the standards asks for same-expression-ness.
Whether a compiler should diagnose it is another question.
I understand reversed operands (for commutative operators) as having an equal
exact dependence on the entities. And same for associative operators. 
Thus it is bound to be very complicated in the general case. 

However one could use an exact expression comparison (like what you proposed)
and emit a warning only. 
This should take care of the most common cases without being too complicated.

About the functions to reuse there is also gfc_dep_compare_expr and its
sub-functions (they should handle functions, variables and arithmetic
operators). I don't know however how you will have two corresponding dummy
arguments (from different procedures) compare equal. It's possibly not that
simple after all, if you need to rewrite the functions. As far as I'm
concerned, constants are enough then.


[Bug bootstrap/49964] Bootstrap failed with AVX turned on

2011-08-03 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49964

Richard Henderson rth at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #24910|0   |1
is obsolete||
 AssignedTo|unassigned at gcc dot   |rth at gcc dot gnu.org
   |gnu.org |

--- Comment #6 from Richard Henderson rth at gcc dot gnu.org 2011-08-03 
21:43:53 UTC ---
Created attachment 24911
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24911
full patch

Your patch misses several patterns.

This bootstraps, but I don't have an avx cpu locally.


[Bug bootstrap/49964] Bootstrap failed with AVX turned on

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49964

--- Comment #7 from H.J. Lu hjl.tools at gmail dot com 2011-08-03 21:46:22 
UTC ---
(In reply to comment #6)
 Created attachment 24911 [details]
 full patch
 
 Your patch misses several patterns.
 
 This bootstraps, but I don't have an avx cpu locally.

I am testing it now.  Thanks.


[Bug libstdc++/1773] __cplusplus defined to 1, should be 199711L

2011-08-03 Thread marc.glisse at normalesup dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773

--- Comment #106 from Marc Glisse marc.glisse at normalesup dot org 
2011-08-03 21:51:53 UTC ---
(In reply to comment #96)
 I could trace this to g++ defining __STRICT_ANSI__ for
 -std=c++98/c++0x.  sys/feature_tests.h defines _STRICT_STDC in this
 case, which hides the !_REENTRANT  !_LP64  !_STRICT_STDC getc
 definition in iso/stdio_iso.h.

If you don't like fixincludes, we could also make g++ never define
__STRICT_ANSI__ on Solaris. After all, it already unconditionally defines
__STDC_VERSION__=199901L, _XOPEN_SOURCE=600 and __EXTENSIONS__...


[Bug libgomp/48841] [regression] lot more libgomp testsuite failures compared to 4.4.5

2011-08-03 Thread htl10 at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48841

--- Comment #6 from Hin-Tak Leung htl10 at users dot sourceforge.net 
2011-08-03 22:26:13 UTC ---
(In reply to comment #5)

 Please follow the directions I gave in that PR.  Start with a standard
 configure; make setup, no bootstrap-lean4, no relative paths to the
 source dir.  This works just fine for me, so instead of insisting on
 trying untested paths, first determine if the regular one works.  Even
 gcc 4.5 is old by now...

Okay... did the plain configure and make and no relative path, and watching my
4.6.1 make -k check - I'll be summiting the result later to the testsuite
mailing list; but it is currently spilling a lot of 


Unaligned access pid=353493 a.28.1.exe va=0x14000ad5e pc=0x3ff81006d00
ra=0x3ff81006c44 inst=0xb3e9
---

messages, with a different ?.exe. and I looked, and it is currently doing
make check inside libgomp . So it looks like there was some kind of alignment
regression after 4.4.5 .


[Bug target/34888] Stack patterns for AVR not optimal

2011-08-03 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34888

--- Comment #5 from Richard Henderson rth at gcc dot gnu.org 2011-08-03 
22:57:25 UTC ---
Author: rth
Date: Wed Aug  3 22:57:22 2011
New Revision: 177300

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=177300
Log:
PR target/34888
* config/avr/avr.md: New splitter for REG_ARGS_SIZE 0.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/avr/avr.md


[Bug target/34888] Stack patterns for AVR not optimal

2011-08-03 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34888

Richard Henderson rth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|WAITING

--- Comment #6 from Richard Henderson rth at gcc dot gnu.org 2011-08-03 
22:58:20 UTC ---
Fixed?


[Bug libgomp/48841] [regression] lot more libgomp testsuite failures compared to 4.4.5

2011-08-03 Thread htl10 at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48841

Hin-Tak Leung htl10 at users dot sourceforge.net changed:

   What|Removed |Added

  Known to work||4.4.5, 4.6.1
  Known to fail||4.4.6

--- Comment #7 from Hin-Tak Leung htl10 at users dot sourceforge.net 
2011-08-03 23:08:47 UTC ---
Please ignore last comment 6. With 4.6.1:

=== libgomp Summary ===

# of expected passes2586
# of unsupported tests3

So the problem is not seen in 4.6.1.


[Bug bootstrap/49964] Bootstrap failed with AVX turned on

2011-08-03 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49964

--- Comment #8 from H.J. Lu hjl.tools at gmail dot com 2011-08-04 00:18:27 
UTC ---
(In reply to comment #6)
 Created attachment 24911 [details]
 full patch
 
 Your patch misses several patterns.
 
 This bootstraps, but I don't have an avx cpu locally.

It works:

http://gcc.gnu.org/ml/gcc-testresults/2011-08/msg00355.html


  1   2   >