[Bug fortran/54107] [4.8 Regression] Memory hog with abstract interface

2012-07-29 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54107

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 CC||janus at gcc dot gnu.org

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr 2012-07-29 
08:00:01 UTC ---
This is due to revision 189514 (with r189513 reverted in order to bootstrap):

Author:janus
Date:Mon Jul 16 10:13:19 2012 UTC (12 days, 21 hours ago)
Changed paths:6
Log Message:
2012-07-16  Janus Weil  ja...@gcc.gnu.org

PR fortran/53956
* gfortran.h (gfc_copy_formal_args,gfc_copy_formal_args_ppc): Modified
prototypes.
* symbol.c (gfc_copy_formal_args): New argument 'if_src'. Copy if_source
of dummy procedures.
(gfc_copy_formal_args_ppc): Ditto.
* resolve.c (resolve_procedure_interface): Pass IFSRC_DECL to
gfc_copy_formal_args.
(resolve_fl_derived0): Pass IFSRC_DECL to gfc_copy_formal_args_ppc.


2012-07-16  Janus Weil  ja...@gcc.gnu.org

PR fortran/53956
* gfortran.dg/proc_decl_28.f90: New.


[Bug target/54115] New: Unnecessary sign extensions for __builtin_ctz et al.

2012-07-29 Thread neleai at seznam dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54115

 Bug #: 54115
   Summary: Unnecessary sign extensions for __builtin_ctz et al.
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: nel...@seznam.cz


Instructions bsf,bsr,bsfq... return integer in range 0..63. 
When used in 64 bit computations an unnecessary sign extension is emitted as
following example shows:

#include stdint.h
uint64_t foo(long x){
 return __builtin_ctzl(x);
}

Output:

  .file exa.c
  .text
  .p2align 4,,15
  .globl  foo
  .type foo, @function
foo:
.LFB0:
  .cfi_startproc
  bsfq  %rdi, %rax
  cltq
  ret
  .cfi_endproc
.LFE0:
  .size foo, .-foo
  .ident  GCC: (Debian 4.7.1-2) 4.7.1
  .section  .note.GNU-stack,,@progbits


[Bug target/54115] Unnecessary sign extensions for __builtin_ctz et al.

2012-07-29 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54115

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-07-29 
08:15:14 UTC ---
Dup of bug 29776 .

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


[Bug target/29776] result of ffs/clz/ctz/popcount/parity are already sign-extended

2012-07-29 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29776

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 CC||neleai at seznam dot cz

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org 2012-07-29 
08:15:14 UTC ---
*** Bug 54115 has been marked as a duplicate of this bug. ***


[Bug fortran/54107] [4.8 Regression] Memory hog with abstract interface

2012-07-29 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54107

--- Comment #3 from janus at gcc dot gnu.org 2012-07-29 08:46:22 UTC ---
(In reply to comment #2)
 This is due to revision 189514 (with r189513 reverted in order to bootstrap):

Ok, I already suspected this revision as a possible candidate for the breakage.
Will have a look ...


[Bug tree-optimization/54116] New: suboptimal code for tight loops

2012-07-29 Thread neleai at seznam dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54116

 Bug #: 54116
   Summary: suboptimal code for tight loops
Classification: Unclassified
   Product: gcc
   Version: 4.7.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: nel...@seznam.cz


Consider following loop.

int recal(int *x){int i;
  for(i=0;;i+=4){
if(__builtin_expect((x[i]|x[i+1])|(x[i+2]|x[i+3]),0))
  break;
  }
  return (x[i]|x[i+1])*(x[i+2]|x[i+3]);
}

On x64 orl instruction is destructive. Gcc saves intermediate result to
register instead recalculating it at end of loop, making loop run slower.

Relevant assembly output is following:

gcc-4.7 -O3 -S
.file   recal.c
.text
.p2align 4,,15
.globl  recal
.type   recal, @function
recal:
.LFB0:
.cfi_startproc
movl12(%rdi), %edx
orl 8(%rdi), %edx
movl4(%rdi), %ecx
orl (%rdi), %ecx
movl%edx, %eax
orl %ecx, %eax
jne .L2
leaq16(%rdi), %rax
.p2align 4,,10
.p2align 3
.L3:
movl12(%rax), %edx
orl 8(%rax), %edx
movl4(%rax), %ecx
orl (%rax), %ecx
addq$16, %rax
movl%edx, %esi
orl %ecx, %esi
je  .L3
.L2:
movl%ecx, %eax
imull   %edx, %eax
ret
.cfi_endproc
.LFE0:
.size   recal, .-recal
.ident  GCC: (Debian 4.7.1-2) 4.7.1
.section.note.GNU-stack,,@progbits
--


[Bug tree-optimization/54116] suboptimal code for tight loops

2012-07-29 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54116

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-07-29 
10:13:41 UTC ---
The tree level looks correct:
bb 4:
  # ivtmp.23_69 = PHI ivtmp.23_68(5), ivtmp.23_66(3)
  D.1771_65 = (void *) ivtmp.23_69;
  D.1717_6 = MEM[base: D.1771_65, offset: 0B];
  D.1722_10 = MEM[base: D.1771_65, offset: 4B];
  D.1723_11 = D.1722_10 | D.1717_6;
  D.1727_15 = MEM[base: D.1771_65, offset: 8B];
  D.1731_19 = MEM[base: D.1771_65, offset: 12B];
  D.1732_20 = D.1731_19 | D.1727_15;
  D.1733_21 = D.1732_20 | D.1723_11;
  ivtmp.23_68 = ivtmp.23_69 + 16;
  if (D.1733_21 != 0)
goto bb 6;
  else
goto bb 5;

bb 5:
  goto bb 4;

bb 6:
  # D.1723_22 = PHI D.1723_11(4), D.1723_36(2)
  # D.1732_23 = PHI D.1732_20(4), D.1732_45(2)
  D.1737_25 = D.1723_22 * D.1732_23;
  return D.1737_25;


--- CUT 
Are you trying to say GCC should copy the loop header in this case?
Or keeping around x[i]|x[i+1] and x[i+2]|x[i+3] result increases register
pressure and exposes issues with 2-operand machines in some cases?


[Bug tree-optimization/54116] suboptimal code for tight loops

2012-07-29 Thread neleai at seznam dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54116

--- Comment #2 from Ondrej Bilka neleai at seznam dot cz 2012-07-29 10:30:46 
UTC ---
On Sun, Jul 29, 2012 at 10:13:41AM +, pinskia at gcc dot gnu.org wrote:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54116
 
 --- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-07-29 
 10:13:41 UTC ---
 The tree level looks correct:
 bb 4:
   # ivtmp.23_69 = PHI ivtmp.23_68(5), ivtmp.23_66(3)
   D.1771_65 = (void *) ivtmp.23_69;
   D.1717_6 = MEM[base: D.1771_65, offset: 0B];
   D.1722_10 = MEM[base: D.1771_65, offset: 4B];
   D.1723_11 = D.1722_10 | D.1717_6;
   D.1727_15 = MEM[base: D.1771_65, offset: 8B];
   D.1731_19 = MEM[base: D.1771_65, offset: 12B];
   D.1732_20 = D.1731_19 | D.1727_15;
   D.1733_21 = D.1732_20 | D.1723_11;
   ivtmp.23_68 = ivtmp.23_69 + 16;
   if (D.1733_21 != 0)
 goto bb 6;
   else
 goto bb 5;
 
 bb 5:
   goto bb 4;
 
 bb 6:
   # D.1723_22 = PHI D.1723_11(4), D.1723_36(2)
   # D.1732_23 = PHI D.1732_20(4), D.1732_45(2)
   D.1737_25 = D.1723_22 * D.1732_23;
   return D.1737_25;
 
 
 --- CUT 
 Are you trying to say GCC should copy the loop header in this case?
 Or keeping around x[i]|x[i+1] and x[i+2]|x[i+3] result increases register
 pressure and exposes issues with 2-operand machines in some cases?

Increases register pressure. 

 
 -- 
 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email
 --- You are receiving this mail because: ---
 You reported the bug.


[Bug target/29776] result of ffs/clz/ctz/popcount/parity are already sign-extended

2012-07-29 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29776

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

   Last reconfirmed|2011-12-24 00:00:00 |2012-07-29 0:00
 CC||uros at gcc dot gnu.org

--- Comment #3 from Steven Bosscher steven at gcc dot gnu.org 2012-07-29 
13:23:30 UTC ---
Tested with trunk r189929 on x86-64 (generic).

#define MODE signed // or unsigned
unsigned mask[8];

unsigned foo(unsigned y, unsigned char x)
{
  MODE int c = (MODE) __builtin_ctz(x);
  unsigned int m = mask[c];
  return y  m;
}


With MODE==signed:
movzbl  %sil, %esi
movl%edi, %eax
rep; bsfl   %esi, %esi
movslq  %esi, %rsi
andlmask(,%rsi,4), %eax
ret

With MODE==unsigned:
movzbl  %sil, %esi
movl%edi, %eax
rep; bsfl   %esi, %esi
movl%esi, %esi
andlmask(,%rsi,4), %eax
ret

The movl %esi, %esi is a zeroextendsidi:
#(insn:TI 9 2 10 2 (parallel [
#(set (reg:SI 4 si [orig:60 D.1716 ] [60])
#(ctz:SI (reg:SI 4 si [orig:68 D.1715 ] [68])))
#(clobber (reg:CC 17 flags))
#]) t.c:6 666 {ctzsi2}
# (expr_list:REG_UNUSED (reg:CC 17 flags)
#(nil)))
rep; bsfl   %esi, %esi  # 9 ctzsi2  [length = 4]
#(insn:TI 10 9 12 2 (set (reg:DI 4 si [orig:70 D.1716 ] [70])
#(zero_extend:DI (reg:SI 4 si [orig:60 D.1716 ] [60]))) t.c:7 113
{*zero_extendsidi2_rex64}
# (nil))
movl%esi, %esi  # 10*zero_extendsidi2_rex64/1   [length
= 2]

Perhaps REE can be taught about ctz giving a non-negative result.


[Bug tree-optimization/30318] VRP does not create ANTI_RANGEs on overflow

2012-07-29 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30318

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #27317|0   |1
is obsolete||

--- Comment #21 from Marc Glisse glisse at gcc dot gnu.org 2012-07-29 
14:44:25 UTC ---
Created attachment 27885
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27885
MULT_EXPR

It still requires some double-checking, a testcase, a bootstrap+regtest, but it
seems to give sensible results.


[Bug pch/54117] New: FAIL: ./decl-3.h -O0 -g (internal compiler error)

2012-07-29 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54117

 Bug #: 54117
   Summary: FAIL: ./decl-3.h  -O0 -g (internal compiler error)
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: pch
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: dang...@gcc.gnu.org
  Host: hppa2.0w-hp-hpux11.11
Target: hppa2.0w-hp-hpux11.11
 Build: hppa2.0w-hp-hpux11.11


Executing on host: /test/gnu/gcc/objdir/gcc/xgcc -B/test/gnu/gcc/objdir/gcc/
./decl-3.h  -fno-diagnostics-show-caret   -O0 -g   -o decl-3.h.gch(timeout
= 30
0)
spawn /test/gnu/gcc/objdir/gcc/xgcc -B/test/gnu/gcc/objdir/gcc/ ./decl-3.h
-fno-
diagnostics-show-caret -O0 -g -o decl-3.h.gch
./decl-3.h:3:1: internal compiler error: in c_common_write_pch, at
c-family/c-pc
h.c:181
Please submit a full bug report,with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
compiler exited with status 1
output is:
./decl-3.h:3:1: internal compiler error: in c_common_write_pch, at
c-family/c-pc
h.c:181
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
FAIL: ./decl-3.h  -O0 -g (internal compiler error)
FAIL: ./decl-3.h  -O0 -g (test for excess errors)
Excess errors:
./decl-3.h:3:1: internal compiler error: in c_common_write_pch, at
c-family/c-pch.c:181

pch file 'decl-3.h.gch' missing
FAIL: gcc.dg/pch/decl-3.c -O0 -g
assembly file 'decl-3.s' missing
FAIL: gcc.dg/pch/decl-3.c -O0 -g assembly comparison

Similar fails:

FAIL: ./decl-3.h   -O3 -g  (internal compiler error)
FAIL: ./decl-3.h   -O3 -g  (test for excess errors)
FAIL: gcc.dg/pch/decl-3.c  -O3 -g 
FAIL: gcc.dg/pch/decl-3.c  -O3 -g  assembly comparison
FAIL: ./decl-4.h  -O0 -g (internal compiler error)FAIL: ./decl-4.h  -O0 -g
(test for excess errors)
FAIL: gcc.dg/pch/decl-4.c -O0 -g
FAIL: gcc.dg/pch/decl-4.c -O0 -g assembly comparison
FAIL: ./decl-4.h   -O3 -g  (internal compiler error)
FAIL: ./decl-4.h   -O3 -g  (test for excess errors)
FAIL: gcc.dg/pch/decl-4.c  -O3 -g 
FAIL: gcc.dg/pch/decl-4.c  -O3 -g  assembly comparison
FAIL: ./struct-1.h  -O0 -g (internal compiler error)
FAIL: ./struct-1.h  -O0 -g (test for excess errors)
FAIL: gcc.dg/pch/struct-1.c -O0 -g
FAIL: gcc.dg/pch/struct-1.c -O0 -g assembly comparison
FAIL: ./struct-1.h   -O3 -g  (internal compiler error)
FAIL: ./struct-1.h   -O3 -g  (test for excess errors)
FAIL: gcc.dg/pch/struct-1.c  -O3 -g 
FAIL: gcc.dg/pch/struct-1.c  -O3 -g  assembly comparison
FAIL: ./system-1.h  -O0 -g (internal compiler error)
FAIL: ./system-1.h  -O0 -g (test for excess errors)
FAIL: gcc.dg/pch/system-1.c -O0 -g
FAIL: gcc.dg/pch/system-1.c -O0 -g assembly comparison
FAIL: ./system-1.h   -O3 -g  (internal compiler error)
FAIL: ./system-1.h   -O3 -g  (test for excess errors)
FAIL: gcc.dg/pch/system-1.c  -O3 -g 
FAIL: gcc.dg/pch/system-1.c  -O3 -g  assembly comparison
FAIL: ./warn-1.h  -O0 -g (internal compiler error)
FAIL: ./warn-1.h  -O0 -g (test for excess errors)
FAIL: gcc.dg/pch/warn-1.c -O0 -g
FAIL: ./warn-1.h   -O3 -g  (internal compiler error)
FAIL: ./warn-1.h   -O3 -g  (test for excess errors)
FAIL: gcc.dg/pch/warn-1.c  -O3 -g


[Bug lto/54118] New: ICE in lto_output_varpool_node

2012-07-29 Thread wbrana at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54118

 Bug #: 54118
   Summary: ICE in lto_output_varpool_node
Classification: Unclassified
   Product: gcc
   Version: 4.7.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: lto
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: wbr...@gmail.com


g++.dg/cpp0x/variadic-init.C fails with
lto1: internal compiler error: in lto_output_varpool_node, at lto-cgraph.c:595
if -flto is used

Compiler version: 4.7.2 20120728 (prerelease) (Gentoo Hardened 4.7.2 p1.0,
pie-0.5.3) 
Platform: x86_64-pc-linux-gnu
configure flags: --prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.2
--includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include
--datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.2
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.2/man
--infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.7.2/info
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.2/include/g++-v4
--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec
--disable-fixed-point --with-ppl --with-cloog --disable-ppl-version-check
--with-cloog-include=/usr/include/cloog-ppl --enable-lto --disable-nls
--with-system-zlib --enable-obsolete --disable-werror --enable-secureplt
--enable-multilib --with-multilib-list=m32,m64 --enable-libmudflap
--disable-libssp --enable-esp --enable-libgomp
--with-python-dir=/share/gcc-data/x86_64-pc-linux-gnu/4.7.2/python
--enable-checking=release --disable-libgcj --disable-libquadmath
--enable-languages=c,c++ --enable-shared --enable-threads=posix
--enable-__cxa_atexit --enable-clocale=gnu --enable-targets=all
--with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo Hardened 4.7.2
p1.0, pie-0.5.3'


[Bug tree-optimization/54119] New: FAIL: gcc.dg/tree-ssa/vector-4.c scan-tree-dump-times gimple VEC_PERM_EXPR a, b, { 0, 4, 1, 5 }; 1

2012-07-29 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54119

 Bug #: 54119
   Summary: FAIL: gcc.dg/tree-ssa/vector-4.c scan-tree-dump-times
gimple VEC_PERM_EXPR a, b, { 0, 4, 1, 5 }; 1
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: dang...@gcc.gnu.org
  Host: hppa2.0w-hp-hpux11.11
Target: hppa2.0w-hp-hpux11.11
 Build: hppa2.0w-hp-hpux11.11


Executing on host: /test/gnu/gcc/objdir/gcc/xgcc -B/test/gnu/gcc/objdir/gcc/
/test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/tree-ssa/vector-4.c 
-fno-diagnostics-show-caret   -w -O1 -fdump-tree-gimple -S  -o vector-4.s   
(timeout = 300)
spawn /test/gnu/gcc/objdir/gcc/xgcc -B/test/gnu/gcc/objdir/gcc/
/test/gnu/gcc/gc
c/gcc/testsuite/gcc.dg/tree-ssa/vector-4.c -fno-diagnostics-show-caret -w -O1
-fdump-tree-gimple -S -o vector-4.s
PASS: gcc.dg/tree-ssa/vector-4.c (test for excess errors)FAIL:
gcc.dg/tree-ssa/vector-4.c scan-tree-dump-times gimple VEC_PERM_EXPR a, b, {
0, 4, 1, 5 }; 1


[Bug tree-optimization/54119] FAIL: gcc.dg/tree-ssa/vector-4.c scan-tree-dump-times gimple VEC_PERM_EXPR a, b, { 0, 4, 1, 5 }; 1

2012-07-29 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54119

--- Comment #1 from John David Anglin danglin at gcc dot gnu.org 2012-07-29 
15:25:38 UTC ---
Created attachment 27886
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27886
Tree dump


[Bug tree-optimization/54119] FAIL: gcc.dg/tree-ssa/vector-4.c scan-tree-dump-times gimple VEC_PERM_EXPR a, b, { 0, 4, 1, 5 }; 1

2012-07-29 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54119

--- Comment #2 from John David Anglin danglin at gcc dot gnu.org 2012-07-29 
15:29:37 UTC ---
Created attachment 27887
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27887
Tree dump


[Bug tree-optimization/54119] FAIL: gcc.dg/tree-ssa/vector-4.c scan-tree-dump-times gimple VEC_PERM_EXPR a, b, { 0, 4, 1, 5 }; 1

2012-07-29 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54119

--- Comment #3 from John David Anglin danglin at gcc dot gnu.org 2012-07-29 
15:35:26 UTC ---
Looks like a callee copies issue.


[Bug pch/54117] FAIL: ./decl-3.h -O0 -g (internal compiler error)

2012-07-29 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54117

John David Anglin danglin at gcc dot gnu.org changed:

   What|Removed |Added

 CC||steven at gcc dot gnu.org

--- Comment #1 from John David Anglin danglin at gcc dot gnu.org 2012-07-29 
16:18:19 UTC ---
The following stabs output is generated after pch_init is called in
the decl-3.h test:

.stabsfoo_p:t16=17=*18=xsfoo:,128,0,2,0


[Bug middle-end/53823] [4.8 Regression] FAIL: gcc.c-torture/execute/930921-1.c execution at -O0 and -O1

2012-07-29 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53823

--- Comment #4 from John David Anglin danglin at gcc dot gnu.org 2012-07-29 
16:31:22 UTC ---
Created attachment 27888
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27888
Patch

Fixes 930921-1.c and four original acats fails, but not
additional acats fails introduced in 189441.


[Bug libstdc++/54075] [4.7.1] unordered_map insert 3x slower than 4.6.2

2012-07-29 Thread fdumont at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54075

--- Comment #23 from François Dumont fdumont at gcc dot gnu.org 2012-07-29 
16:44:26 UTC ---
Author: fdumont
Date: Sun Jul 29 16:44:18 2012
New Revision: 189938

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189938
Log:
2012-07-29  François Dumont  fdum...@gcc.gnu.org

PR libstdc++/54075
* include/bits/hashtable_policy.h
(_Prime_rehash_policy::_M_next_bkt): Add a growth factor set to 2
to boost growth in the number of buckets.
* testsuite/performance/23_containers/insert/unordered_set.cc: New.

Added:
   
trunk/libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/hashtable_policy.h


[Bug pch/54117] [4.8 Regression] FAIL: ./decl-3.h -O0 -g (internal compiler error)

2012-07-29 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54117

John David Anglin danglin at gcc dot gnu.org changed:

   What|Removed |Added

Summary|FAIL: ./decl-3.h  -O0 -g|[4.8 Regression] FAIL:
   |(internal compiler error)   |./decl-3.h  -O0 -g
   ||(internal compiler error)

--- Comment #2 from John David Anglin danglin at gcc dot gnu.org 2012-07-29 
16:45:36 UTC ---
Breakpoint 1, pch_init () at ../../gcc/gcc/c-family/c-pch.c:161
161  (*debug_hooks-handle_pch) (0);
(gdb) c
Continuing.

Breakpoint 4, dbxout_begin_complex_stabs () at ../../gcc/gcc/dbxout.c:620
620  emit_pending_bincls_if_required ();
(gdb) bt
#0  dbxout_begin_complex_stabs () at ../../gcc/gcc/dbxout.c:620
#1  0x0088317c in dbxout_symbol (decl=0x7ae37ee0, local=0)
at ../../gcc/gcc/dbxout.c:2816
#2  0x00876834 in dbxout_type_decl (decl=0x7ae37ee0, local=0)
at ../../gcc/gcc/dbxout.c:1388
#3  0x010fc0ec in rest_of_decl_compilation (decl=0x7ae37ee0, top_level=1, 
at_end=0) at ../../gcc/gcc/passes.c:196
#4  0x000bb148 in finish_decl (decl=0x7ae37ee0, init_loc=0, init=0x0, 
origtype=0x0, asmspec_tree=0x0) at ../../gcc/gcc/c/c-decl.c:4490
#5  0x001bb6f0 in c_parser_declaration_or_fndef (parser=0x7aeb2aa0, 
fndef_ok=0 '\000', static_assert_ok=1 '\001', empty_ok=1 '\001', 
nested=0 '\000', start_attr_ok=1 '\001', 
objc_foreach_object_declaration=0x0) at ../../gcc/gcc/c/c-parser.c:1665
#6  0x001bad54 in c_parser_external_declaration (parser=0x7aeb2aa0)
at ../../gcc/gcc/c/c-parser.c:1362
#7  0x001ba744 in c_parser_translation_unit (parser=0x7aeb2aa0)
at ../../gcc/gcc/c/c-parser.c:1250
#8  0x001d8a98 in c_parse_file () at ../../gcc/gcc/c/c-parser.c:10836
#9  0x003211c0 in c_common_parse_file ()
at ../../gcc/gcc/c-family/c-opts.c:1137
#10 0x012ccf80 in compile_file () at ../../gcc/gcc/toplev.c:546
#11 0x012d0420 in do_compile () at ../../gcc/gcc/toplev.c:1863
#12 0x012d070c in toplev_main (argc=16, argv=0x7eff0544)
---Type return to continue, or q return to quit---
at ../../gcc/gcc/toplev.c:1939
#13 0x0424e104 in main (argc=16, argv=0x7eff0544) at ../../gcc/gcc/main.c:36


[Bug fortran/54107] [4.8 Regression] Memory hog with abstract interface

2012-07-29 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54107

--- Comment #4 from janus at gcc dot gnu.org 2012-07-29 16:50:37 UTC ---
Reduced test case:

  subroutine compute_routine (zfunc) 
procedure(compute_routine) :: zfunc 
  end subroutine 


I would assume that this is invalid, since the declaration of compute_routine's
interface is somehow 'recursive', i.e. referring to itself.


[Bug tree-optimization/53773] Vectorizer generates non-canonical multiplies

2012-07-29 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53773

William J. Schmidt wschmidt at gcc dot gnu.org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot   |wschmidt at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.8.0

--- Comment #5 from William J. Schmidt wschmidt at gcc dot gnu.org 2012-07-29 
16:54:45 UTC ---
I'll take this one.

I think the assumption of operand placement is too embedded to tease out
easily, so I'm going to approach this by re-canonicalizing PLUS_EXPR,
POINTER_PLUS_EXPR, and MULT_EXPR when operand swapping has occurred.  Are there
other tree codes that could be broken?


[Bug fortran/51081] [F03] Proc-pointer assignment: Rejects valid internal proc

2012-07-29 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51081

--- Comment #8 from janus at gcc dot gnu.org 2012-07-29 16:55:11 UTC ---
Related accepts-invalid problem with proc-pointer assignment to an internal
proc:

  implicit none
  procedure(real), pointer :: p
  p = scale
  print *,p(1.0,2)
end


/tmp/cc4EkFwV.o: In function `MAIN__':
test.f90:(.text+0xf): undefined reference to `_gfortran_specific__scale_4'


[Bug tree-optimization/53773] Vectorizer generates non-canonical multiplies

2012-07-29 Thread wschmidt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53773

William J. Schmidt wschmidt at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED


[Bug libstdc++/54075] [4.7.1] unordered_map insert 3x slower than 4.6.2

2012-07-29 Thread fdumont at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54075

--- Comment #24 from François Dumont fdumont at gcc dot gnu.org 2012-07-29 
17:06:25 UTC ---
Author: fdumont
Date: Sun Jul 29 17:06:21 2012
New Revision: 189941

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=189941
Log:
2012-07-29  François Dumont  fdum...@gcc.gnu.org

PR libstdc++/54075
* include/bits/hashtable_policy.h
(_Prime_rehash_policy::_M_next_bkt): Add a growth factor set to 2
to boost growth in the number of buckets.
* testsuite/performance/23_containers/insert/unordered_set.cc: New.

Added:
   
branches/gcc-4_7-branch/libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc
Modified:
branches/gcc-4_7-branch/libstdc++-v3/ChangeLog
branches/gcc-4_7-branch/libstdc++-v3/include/bits/hashtable_policy.h


[Bug fortran/54120] New: [4.8 Regression] FAIL: gfortran.fortran-torture/execute/random_2.f90 execution

2012-07-29 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54120

 Bug #: 54120
   Summary: [4.8 Regression] FAIL:
gfortran.fortran-torture/execute/random_2.f90
execution
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: dang...@gcc.gnu.org
  Host: hppa*-*-* (32-bit)
Target: hppa*-*-* (32-bit)
 Build: hppa*-*-* (32-bit)


Executing on host: /test/gnu/gcc/objdir/gcc/testsuite/gfortran/../../gfortran
-B/test/gnu/gcc/objdir/gcc/testsuite/gfortran/../../
-B/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/
/test/gnu/gcc/gcc/gcc/testsuite/gfortran.fortran-
torture/execute/random_2.f90  -fno-diagnostics-show-caret  -w  -O0  
-B/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/.libs
-L/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/.libs
-L/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/.libs
-B/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs
-L/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs
-L/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs  -o
/test/gnu/gcc/objdir/gcc/testsuite/gfortran/random_2.x(timeout = 300)spawn
/test/gnu/gcc/objdir/gcc/testsuite/gfortran/../../gfortran
-B/test/gnu/gcc/objdir/gcc/testsuite/gfortran/../../
-B/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/
/test/gnu/gcc/gcc/gcc/testsuite/gfortran.fortran-torture/execu
te/random_2.f90 -fno-diagnostics-show-caret -w -O0
-B/test/gnu/gcc/objdir/hppa2.
0w-hp-hpux11.11/./libgfortran/.libs
-L/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/.libs
-L/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/.libs
-B/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs
-L/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs
-L/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs -o
/test/gnu/gcc/objdir/gcc/testsuite/gfortran/random_2.x
PASS: gfortran.fortran-torture/execute/random_2.f90 compilation,  -O0 
Setting LD_LIBRARY_PATH to
.:/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/.libs:/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/.libs:/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs:/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs:/test/gnu/gcc/objdir/gcc:.:/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/.libs:/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libgfortran/.libs:/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs:/test/gnu/gcc/objdir/hppa2.0w-hp-hpux11.11/./libquadmath/.libs:/test/gnu/gcc/objdir/gcc
spawn [open ...]

Backtrace for this error:
#0  0xC1D3A1BB
FAIL: gfortran.fortran-torture/execute/random_2.f90 execution,  -O0 

FAIL: gfortran.fortran-torture/execute/random_2.f90 execution,  -O1 
FAIL: gfortran.fortran-torture/execute/random_2.f90 execution,  -O2 
FAIL: gfortran.fortran-torture/execute/random_2.f90 execution,  -O2
-fomit-frame
-pointer -finline-functions 
FAIL: gfortran.fortran-torture/execute/random_2.f90 execution,  -O2
-fomit-frame
-pointer -finline-functions -funroll-loops 
FAIL: gfortran.fortran-torture/execute/random_2.f90 execution,  -O2
-fbounds-che
ck 
FAIL: gfortran.fortran-torture/execute/random_2.f90 execution,  -O3 -g 
FAIL: gfortran.fortran-torture/execute/random_2.f90 execution,  -Os 

Problem was introduced between 189245 (ok) and 189394.


[Bug gcov-profile/54121] New: ICE at extract_insn, at recog.c:2123 sparc64

2012-07-29 Thread jengelh at medozas dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54121

 Bug #: 54121
   Summary: ICE at extract_insn, at recog.c:2123 sparc64
Classification: Unclassified
   Product: gcc
   Version: 4.7.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: gcov-profile
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: jeng...@medozas.de


Created attachment 27889
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27889
preprocessed input

$ gcc -std=gnu99 -O1 -fprofile-generate=/tmp/x -c lz_decoder.i -fPIC -o lzd.o
lz/lz_decoder.c: In function 'decode_buffer':
lz/lz_decoder.c:124:1: error: unrecognizable insn:
(insn 267 85 233 7 (set (symbol_ref:DI (__gcov5.decode_buffer) [flags 0x2]
var_decl 0xf80100dc1360 __gcov5.decode_buffer)
(reg:DI 1 %g1)) -1
 (nil))
lz/lz_decoder.c:124:1: internal compiler error: in extract_insn, at
recog.c:2123
Please submit a full bug report,
with preprocessed source if appropriate.


The problem goes away if either of these is done:
- using no optimization
- leaving out -fPIC
- leaving out -fprofile-generate


$ gcc -v
[Configured to output ELF64 objects by default]
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/sparc64-suse-linux/4.7/lto-wrapper
Target: sparc64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64
--enable-languages=c,c++,objc,fortran,obj-c++,java --enable-checking=release
--with-gxx-include-dir=/usr/include/c++/4.7 --enable-ssp --disable-libssp
--disable-libitm --disable-plugin --with-bugurl=http://bugs.opensuse.org/
--with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap
--with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit
--enable-libstdcxx-allocator=new --disable-libstdcxx-pch
--enable-version-specific-runtime-libs --enable-linker-build-id
--program-suffix=-4.7 --enable-linux-futex --without-system-libunwind
--with-cpu=ultrasparc --with-long-double-128 --build=sparc64-suse-linux
Thread model: posix
gcc version 4.7.1 20120723 [gcc-4_7-branch revision 189773] (SUSE Linux) 
with binutils-2.22


recog.c:2123 is the following:
/* recog.c */
default:
normal_insn:
  /* Ordinary insn: recognize it, get the operands via insn_extract
 and get the constraints.  */

  icode = recog_memoized (insn);
  if (icode  0)
2123#   fatal_insn_not_found (insn);

  recog_data.n_operands = noperands = insn_data[icode].n_operands;
  recog_data.n_alternatives = insn_data[icode].n_alternatives;
  recog_data.n_dups = insn_data[icode].n_dups;


[Bug c++/54122] New: gcc segfault comparing enum class in lambda inside constructor of a templated class

2012-07-29 Thread gcc at nnamdi dot co.uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54122

 Bug #: 54122
   Summary: gcc segfault comparing enum class in lambda inside
constructor of a templated class
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: g...@nnamdi.co.uk


Created attachment 27890
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27890
Preprocessed source output from gcc

enum class Enum
{
VALUE_1,
VALUE_2
};

template class T
struct Struct
{
Struct()
{
const auto func = [=]
{
return (e == Enum::VALUE_2)
};

(void)func;
}

Enum e;
};

int main()
{
}




/tmp$ g++ -v -save-temps -std=c++11 test.cpp
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.7.0-1ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs
--enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.7 --enable-shared --enable-linker-build-id
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object
--enable-plugin --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.7.0 (Ubuntu/Linaro 4.7.0-1ubuntu1) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c++11' '-shared-libgcc'
'-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/4.7/cc1plus -E -quiet -v -imultiarch
x86_64-linux-gnu -D_GNU_SOURCE test.cpp -mtune=generic -march=x86-64 -std=c++11
-fpch-preprocess -fstack-protector -o test.ii
ignoring nonexistent directory /usr/local/include/x86_64-linux-gnu
ignoring nonexistent directory
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include
#include ... search starts here:
#include ... search starts here:
 /usr/include/c++/4.7
 /usr/include/c++/4.7/x86_64-linux-gnu
 /usr/include/c++/4.7/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c++11' '-shared-libgcc'
'-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/4.7/cc1plus -fpreprocessed test.ii -quiet
-dumpbase test.cpp -mtune=generic -march=x86-64 -auxbase test -std=c++11
-version -fstack-protector -o test.s
GNU C++ (Ubuntu/Linaro 4.7.0-1ubuntu1) version 4.7.0 (x86_64-linux-gnu)
compiled by GNU C version 4.7.0, GMP version 5.0.2, MPFR version 3.1.0-p3,
MPC version 0.9
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=127391
GNU C++ (Ubuntu/Linaro 4.7.0-1ubuntu1) version 4.7.0 (x86_64-linux-gnu)
compiled by GNU C version 4.7.0, GMP version 5.0.2, MPFR version 3.1.0-p3,
MPC version 0.9
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=127391
Compiler executable checksum: ebe4fd45b8b9c3fd6dc0cfc73cec8259
test.cpp: In lambda function:
test.cpp:14:32: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-4.7/README.Bugs for instructions.
Preprocessed source stored into /tmp/ccmDN5TQ.out file, please attach this to
your bugreport.


[Bug fortran/51081] [F03] Proc-pointer assignment: Rejects valid internal proc

2012-07-29 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51081

--- Comment #9 from janus at gcc dot gnu.org 2012-07-29 19:04:25 UTC ---
The following patch adds diagnostics to reject the invalid test case in comment
8:


Index: gcc/fortran/expr.c
===
--- gcc/fortran/expr.c(revision 189929)
+++ gcc/fortran/expr.c(working copy)
@@ -3444,6 +3444,13 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_ex
   at %L, rvalue-symtree-name, rvalue-where)
   == FAILURE)
 return FAILURE;
+  if (attr.intrinsic  gfc_intrinsic_actual_ok (rvalue-symtree-name,
+ attr.subroutine) == 0)
+{
+  gfc_error (Intrinsic '%s' at %L is invalid in procedure pointer 
+ assignment, rvalue-symtree-name, rvalue-where);
+  return FAILURE;
+}
 }
   /* Check for F08:C730.  */
   if (attr.elemental  !attr.intrinsic)


[Bug fortran/51081] [F03] Proc-pointer assignment: Rejects valid internal proc

2012-07-29 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51081

--- Comment #10 from janus at gcc dot gnu.org 2012-07-29 20:15:52 UTC ---
(In reply to comment #9)
 The following patch adds diagnostics to reject the invalid test case in 
 comment
 8:

... and regtests cleanly.


[Bug fortran/54107] [4.8 Regression] Memory hog with abstract interface

2012-07-29 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54107

--- Comment #5 from janus at gcc dot gnu.org 2012-07-29 20:54:21 UTC ---
(In reply to comment #4)
 I would assume that this is invalid, since the declaration of 
 compute_routine's
 interface is somehow 'recursive', i.e. referring to itself.

... however, I could not find anything in the standard that would prohibit it.
And also Bob Corbett claims that it is valid in the c.l.f. thread mentioned in
comment #0.

The problem is that we generate an infinite chain of symbols: 'compute_routine'
has a formal argument 'zfunc', which itself has an argument 'zfunc', and so on.

Certainly, gfc_copy_formal_args plays a role in this process, but also
resolve_formal_arglist is involved.


[Bug c/54123] New: inline functions not optimized as well as static inline

2012-07-29 Thread eggert at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54123

 Bug #: 54123
   Summary: inline functions not optimized as well as static
inline
Classification: Unclassified
   Product: gcc
   Version: 4.7.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: egg...@gnu.org
  Host: x86_64-unknown-linux-gnu
Target: x86_64-unknown-linux-gnu
 Build: x86_64-unknown-linux-gnu


Created attachment 27891
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27891
test case source code

GCC does not optimize a function declared 'inline' as well as it
optimizes the same function declared 'static inline'.  There is no
reason to optimize differently depending on whether an inline function
is static.

I discovered this problem when using GCC 4.7.1 to compile a test
version of GNU Emacs that uses extern inline functions.

This is a regression from GCC 4.6.3, which optimizes equally well in
both cases.

I enclose a small example of the problem.  With GNU Emacs I found many
more like this, and the size of the GNU Emacs text segment grew by
0.9% when compiled to use extern inline rather than static inline
functions.

To reproduce the problem, process the attached program xml-bug1.c as
follows.  (I'll also attach xml-static-inline.s and xml-inline.s.)

  gcc -std=gnu99 -O2 -S -DINLINE='static inline' -o xml-static-inline.s
xml-bug1.c
  gcc -std=gnu99 -O2 -S -DINLINE='inline' -o xml-inline.s xml-bug1.c
  diff -u xml-static-inline.s xml-inline.s

The diff output will read as follows.  Notice that xml-inline.s
contains an extra instruction 'cmpq Qnil(%rip), %r12' that
xml-static-inline.s does not.  The code is correct, but it's not
optimized as well as it should be.

--- xml-static-inline.s2012-07-29 13:39:24.254184691 -0700
+++ xml-inline.s2012-07-29 13:49:01.555043179 -0700
@@ -238,6 +238,7 @@
 .L40:
 cmpqQnil(%rip), %r12
 je.L51
+.L69:
 movq%r12, %rax
 movqQstringp(%rip), %rdi
 andl$7, %eax
@@ -342,13 +343,8 @@
 ret
 .p2align 4,,10
 .p2align 3
-.L51:
-.cfi_restore_state
-movl$.LC1, %r13d
-jmp.L41
-.p2align 4,,10
-.p2align 3
 .L68:
+.cfi_restore_state
 movq%r12, %rdi
 callxmlDocGetRootElement
 testq%rax, %rax
@@ -363,8 +359,14 @@
 movq%rsi, %rdi
 movq%rsi, 8(%rsp)
 callmove_gap
+cmpqQnil(%rip), %r12
 movq8(%rsp), %rsi
-jmp.L40
+jne.L69
+.p2align 4,,10
+.p2align 3
+.L51:
+movl$.LC1, %r13d
+jmp.L41
 .L66:
 movq%rax, %rdx
 jmp.L45


[Bug c/54123] inline functions not optimized as well as static inline

2012-07-29 Thread eggert at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54123

--- Comment #1 from eggert at gnu dot org 2012-07-29 21:07:26 UTC ---
Created attachment 27892
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27892
test case compiled with -DINLINE='static inline'


[Bug c/54123] inline functions not optimized as well as static inline

2012-07-29 Thread eggert at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54123

--- Comment #2 from eggert at gnu dot org 2012-07-29 21:08:17 UTC ---
Created attachment 27893
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27893
test case compiled with -DINLINE='inline'


[Bug pch/54117] [4.8 Regression] FAIL: ./decl-3.h -O0 -g (internal compiler error)

2012-07-29 Thread steven at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54117

Steven Bosscher steven at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-07-29
 CC|steven at gcc dot gnu.org   |
 AssignedTo|unassigned at gcc dot   |steven at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1


[Bug target/52642] SH Target: libstdc++ failures due to call insn swapped before prologue frame insns

2012-07-29 Thread olegendo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52642

--- Comment #3 from Oleg Endo olegendo at gcc dot gnu.org 2012-07-30 00:07:26 
UTC ---
Kaz, is it OK to close this issue?


[Bug web/54124] New: Web-based GCC 4.7.1 manual seems to have a section corrupted

2012-07-29 Thread kscott at eznet dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54124

 Bug #: 54124
   Summary: Web-based GCC 4.7.1 manual seems to have a section
corrupted
Classification: Unclassified
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: web
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: ksc...@eznet.net


I was looking for a description of the -dM option.  Currently, I'm able to find
it using info on the old version of gcc that's installed at my workplace; the
problem is that the current online HTML manual for v4.7.1 appears as if part of
section 3.11 (options controlling the preprocessor) has been overwritten with
other text about options that control warnings.  As a result, the -dM option,
which belongs in that section, seems to be missing from the HTML manual.


[Bug web/54124] Web-based GCC 4.7.1 manual seems to have a section corrupted

2012-07-29 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54124

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2012-07-30 
02:28:19 UTC ---
http://gcc.gnu.org/onlinedocs/gcc-4.7.1/cpp/Invocation.html#index-dM-185

It is there for me.  It is not under the GCC manual but rather the CPP manual.


[Bug web/54124] Web-based GCC 4.7.1 manual seems to have a section corrupted

2012-07-29 Thread kscott at eznet dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54124

--- Comment #2 from Kevin Scott kscott at eznet dot net 2012-07-30 02:40:29 
UTC ---
Now that you mention it, I looked again, and it in fact is there, in the gcc
manual.  The problem was that, on my prior readings, I instinctively ignored
the entire '-dCHARS' section, as it didn't seem like the thing I was looking
for.  So it might be a little clearer to include the '-d' with each of the five
suboptions.


[Bug web/54124] Web-based GCC 4.7.1 manual seems to have a section corrupted

2012-07-29 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54124

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org 2012-07-30 
02:44:42 UTC ---
Well these  options are really only for debugging and nothing else.


[Bug web/54124] Web-based GCC 4.7.1 manual seems to have a section corrupted

2012-07-29 Thread kscott at eznet dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54124

Kevin Scott kscott at eznet dot net changed:

   What|Removed |Added

URL||http://gcc.gnu.org/onlinedo
   ||cs/gcc-4.7.1/gcc/Preprocess
   ||or-Options.html#Preprocesso
   ||r-Options
Version|unknown |4.7.1
   Severity|normal  |enhancement

--- Comment #4 from Kevin Scott kscott at eznet dot net 2012-07-30 03:12:19 
UTC ---
I've changed the category to enhancement since it only concerns the
readability of the -dCHARS section(s) of the manual(s).  Feel free to either
edit the manual(s) or defer or close, as you see fit.


[Bug target/52642] SH Target: libstdc++ failures due to call insn swapped before prologue frame insns

2012-07-29 Thread kkojima at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52642

--- Comment #4 from Kazumoto Kojima kkojima at gcc dot gnu.org 2012-07-30 
03:16:51 UTC ---
(In reply to comment #3)
 Kaz, is it OK to close this issue?

Yes.  Please go ahead.