[Bug tree-optimization/40436] [4.5/4.6 regression] 0.5% code size regression caused by r147852

2010-11-14 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40436

--- Comment #41 from Jan Hubicka hubicka at gcc dot gnu.org 2010-11-14 
09:06:41 UTC ---
Created attachment 22389
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22389
preprocessed ext/super.c

Hi,
this testcase shows that we are no longer able to optimize away ext3_sops
in
 sb-s_magic = (__builtin_constant_p((__u16)((es-s_magic))) ? ({ __u16 __x =
(((es-s_magic))); ((__u16)( (((__u16)(__x)  (__u16)0x00ffU)  8) |
(((__u16)(__x)  (__u16)0xff00U)  8) )); }) : __fswab16(((es-s_magic;
 if (sb-s_magic != 0xEF53) {
  if (!silent)
   printk(3
  VFS: Can't find ext3 filesystem on dev %s.\n,
  bdevname(dev));
  goto failed_mount;
 }

The problem is that varpool code now expect that variable accesses are
optimized out at the end of gimple queue instead of using
TREE_SYMBOL_REFERENCED bit.  In this case sb-s_magic shomehow manages to get
undefined and in GIMPLE land we keep the conditional around, while in RTL land
init-regs initialize it to 0 that consequently makes mount to always fail.

I guess it is not real code quality bug since it happens only on undefined
behaviour code, but we might consider doing initialization by zero sometime in
gimple queue, too.

Also I am not quite sure if we are not misoptimizing the code, it is
convoluted.


[Bug target/46470] New: add $0x8,%rsp no longer optimized to pop

2010-11-14 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46470

   Summary: add$0x8,%rsp no longer optimized to pop
   Product: gcc
   Version: 4.5.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: hubi...@gcc.gnu.org


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

This is another cause of CSiBE regression at x86_64.

Mainline produces:

00f4 yyerror:
  f4:   48 83 ec 08 sub$0x8,%rsp
  f8:   48 89 famov%rdi,%rdx
  fb:   48 8b 3d 00 00 00 00mov0x0(%rip),%rdi# 102
yyerror+0xe
 102:   be 00 00 00 00  mov$0x0,%esi
 107:   31 c0   xor%eax,%eax
 109:   e8 00 00 00 00  callq  10e yyerror+0x1a
 10e:   31 c0   xor%eax,%eax
 110:   48 83 c4 08 add$0x8,%rsp
 114:   c3  retq

GCC 4.3 produces:

  52:   48 83 ec 08 sub$0x8,%rsp
  56:   48 89 famov%rdi,%rdx
  59:   48 8b 3d 00 00 00 00mov0x0(%rip),%rdi# 60 yyerror+0xe
  60:   be 00 00 00 00  mov$0x0,%esi
  65:   31 c0   xor%eax,%eax
  67:   e8 00 00 00 00  callq  6c yyerror+0x1a
  6c:   31 c0   xor%eax,%eax
  6e:   5a  pop%rdx
  6f:   c3  retq

This is because CFA_ADJUST_CFA reg note is in the way now.
Richard, I think this is result of your changes, what would be best way to
handle this?  I guess peephole2 can just move the note when it translates one
intstruction to one instruction. This however breaks because we want to split
up to 3 pops when doing -Os.
I guess also the epilogue code can just emit the pops directly. There always
should be free register available at this time.


[Bug target/46471] New: Worse register regalloc leads to bigger code at -Os

2010-11-14 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46471

   Summary: Worse register regalloc leads to bigger code at -Os
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: hubi...@gcc.gnu.org


Created attachment 22391
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22391
Preprocessed testcase

Another CSiBE regression I noticed in merged_1v_upsample.  Gcc 4.3 gets around
w/o stack frame:

0018 merged_1v_upsample:
  18:   41 54   push   %r12
  1a:   49 89 d4mov%rdx,%r12
  1d:   53  push   %rbx
  1e:   4c 89 cbmov%r9,%rbx
  21:   48 83 ec 08 sub$0x8,%rsp
  25:   41 8b 09mov(%r9),%ecx
  28:   48 8b 87 60 02 00 00mov0x260(%rdi),%rax
  2f:   8b 12   mov(%rdx),%edx
  31:   49 8d 0c c8 lea(%r8,%rcx,8),%rcx
  35:   ff 50 18callq  *0x18(%rax)
  38:   ff 03   incl   (%rbx)
  3a:   41 ff 04 24 incl   (%r12)
  3e:   58  pop%rax
  3f:   5b  pop%rbx
  40:   41 5c   pop%r12
  42:   c3  retq   

While current mainline produce:

0018 merged_1v_upsample:
  18:   53  push   %rbx
  19:   48 89 d3mov%rdx,%rbx
  1c:   48 83 ec 10 sub$0x10,%rsp
  20:   41 8b 11mov(%r9),%edx
  23:   48 8b 87 60 02 00 00mov0x260(%rdi),%rax
  2a:   4c 89 4c 24 08  mov%r9,0x8(%rsp)
  2f:   49 8d 0c d0 lea(%r8,%rdx,8),%rcx
  33:   8b 13   mov(%rbx),%edx
  35:   ff 50 18callq  *0x18(%rax)
  38:   4c 8b 4c 24 08  mov0x8(%rsp),%r9
  3d:   41 ff 01incl   (%r9)
  40:   ff 03   incl   (%rbx)
  42:   58  pop%rax
  43:   5a  pop%rdx
  44:   5b  pop%rbx
  45:   c3  retq


[Bug tree-optimization/40436] [4.5/4.6 regression] 0.5% code size regression caused by r147852

2010-11-14 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40436

--- Comment #42 from Jan Hubicka hubicka at gcc dot gnu.org 2010-11-14 
09:27:09 UTC ---
Fixing little bug in unreachable function removal and working around PR46470
gets me to:
-2933   linux-2.4.23-pre3-testplatformfs/ext3/superb  8069
-1572   linux-2.4.23-pre3-testplatformdrivers/char/n_ttyb  6038
-1385   teem-1.6.0-srcsrc/limn/test/soidb  5396
-1267   linux-2.4.23-pre3-testplatformfs/ext3/iallocb  2582
-1203   linux-2.4.23-pre3-testplatformmm/filemapb  15592
-1057   teem-1.6.0-srcsrc/limn/test/tpsb  4159
-1010   linux-2.4.23-pre3-testplatformfs/ext3/inodeb  12315
-843   teem-1.6.0-srcsrc/ell/quatb  11314
-834   cg_compiler_opensrcsupportb  27636
-828   OpenTCP-1.0.4ethernetb  1495
-820   teem-1.6.0-srcsrc/nrrd/winKernelb  16288
-807   teem-1.6.0-srcsrc/nrrd/measureb  9444
-677   jikespg-1.3src/ctabsb  48223
-656   teem-1.6.0-srcsrc/echo/test/trendb  9744
-619   linux-2.4.23-pre3-testplatformmm/memoryb  8051
-605   bzip2-1.0.2decompressb  8454
-595   teem-1.6.0-srcsrc/nrrd/kernelb  21446
-586   linux-2.4.23-pre3-testplatformfs/nfsd/vfsb  9082
-582   linux-2.4.23-pre3-testplatformfs/ext3/ballocb  4095
-572   teem-1.6.0-srcsrc/echo/colorb  7500
-546   linux-2.4.23-pre3-testplatformfs/bufferb  14617
-521   linux-2.4.23-pre3-testplatformnet/ipv4/igmpb  12205
-511   linux-2.4.23-pre3-testplatformnet/core/devb  11233
-462   libpng-1.2.5pngrtranb  21062
-427   linux-2.4.23-pre3-testplatformfs/nfs/writeb  6586
-419   linux-2.4.23-pre3-testplatformfs/nameib  11526
-414   teem-1.6.0-srcsrc/ten/tendSatinb  5479
-404   linux-2.4.23-pre3-testplatformfs/jbd/transactionb  10746
-387   teem-1.6.0-srcsrc/echo/intxb  10122
-380   teem-1.6.0-srcsrc/mite/rayb  3376
-357   linux-2.4.23-pre3-testplatformfs/jbd/journalb  9266
-349   cg_compiler_opensrcprintutilsb  12377
-340   linux-2.4.23-pre3-testplatformfs/namespaceb  5715
-317   teem-1.6.0-srcsrc/limn/qnb  2544
-311   linux-2.4.23-pre3-testplatformnet/ipv4/tcp_minisocksb  5169
-306   linux-2.4.23-pre3-testplatformnet/sunrpc/xprtb  8042
-291   linux-2.4.23-pre3-testplatformnet/netlink/af_netlinkb  5792
-289   linux-2.4.23-pre3-testplatformlib/vsprintfb  4266
-286   linux-2.4.23-pre3-testplatformnet/sunrpc/svcsockb  6488
-274   compilervasb  6631

What surprise me is that so far there was no inliner (or size estimate) related
problems... Does the ARM regression reported still exist?
I suppose the fact that we do see regression at our x86_64 CSiBE testing might
be just because of the unforunate 8 page alignments in the kernel.


[Bug c++/46472] New: [C++0X] constexpr is not constexpr

2010-11-14 Thread marc.glisse at normalesup dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46472

   Summary: [C++0X] constexpr is not constexpr
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: marc.gli...@normalesup.org


The code this is reduced from used to compile before the introduction of
constexpr.

templateclass _T1, class _T2 struct pair {
_T1 first;
constexpr pair(){}
};
templatetypename _Tp, int _Nm
struct array
{
_Tp _M_instance[_Nm];
};
array pairint,int, 2 ps;


b.cc: In constructor ‘constexpr arraypairint, int, 2::array()’:
b.cc:6:8: error: ‘constexpr pair_T1, _T2::pair() [with _T1 = int, _T2 = int]’
is not ‘constexpr’
b.cc: At global scope:
b.cc:10:26: note: synthesized method ‘arraypairint, int, 2::array()’ first
required here


[Bug target/46468] enabling -fomit-frame-pointer by default breaks Wine

2010-11-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46468

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hjl at gcc dot gnu.org

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2010-11-14 
10:46:39 UTC ---
I think they require a FP for unwinding.  But indeed -fno-omit-frame-pointer
should work - can you check what code differences occur with
-fno-omit-frame-pointer vs. --enable-frame-pointer?


[Bug objc/46473] New: 'in' not allowed in 'for' loop

2010-11-14 Thread nicola at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46473

   Summary: 'in' not allowed in 'for' loop
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: objc
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: nic...@gcc.gnu.org


The current implementation of Objective-C fast enumeration does not allow a
variable to be named 'in' if used inside a 'for' loop.  For example (in c99):

int main (void)
{
  for (int in = 0; in  10; in++)
printf (%d\n, in);

  return 0;
}

Since Objective-C is (or should be) a superset of C (as much as possible), the
previous snippet of code, which is valid C, should also compile with the
Objective-C compiler.

Thanks


[Bug c++/46472] [C++0X] constexpr is not constexpr

2010-11-14 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46472

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC||jason at gcc dot gnu.org

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com 2010-11-14 
11:00:26 UTC ---
Again, let's add Jason in CC for this one too.


[Bug tree-optimization/40436] [4.5/4.6 regression] 0.5% code size regression caused by r147852

2010-11-14 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40436

--- Comment #43 from Jan Hubicka hubicka at gcc dot gnu.org 2010-11-14 
11:06:59 UTC ---
Created attachment 22392
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22392
Preprocessed ialloc.

One of smaller units that grows a lot.  The culprint seems to be ext3_new_inode
that is a lot smaller in GCC 4.3 variant. Not sure why, the inlining decisions
seems sane.


[Bug c++/46364] [4.5 Regression] basic_string.h:541:32: internal compiler error: Segmentation fault

2010-11-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46364

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P2


[Bug tree-optimization/45722] [4.6 Regression] FAIL: gcc.c-torture/execute/20040709-2.c execution at -O1 and -Os

2010-11-14 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45722

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #36 from Eric Botcazou ebotcazou at gcc dot gnu.org 2010-11-14 
11:26:15 UTC ---
At least on the SPARC.


[Bug rtl-optimization/46315] [4.5 Regression] gcc-4.5.1 -O2 -fno-strict-overflow causes bad code generation

2010-11-14 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46315

--- Comment #7 from Eric Botcazou ebotcazou at gcc dot gnu.org 2010-11-14 
11:34:42 UTC ---
The problem is indeed the note, but I don't think it comes from it being sort
of self-referential.  The use of reg 83 in the note doesn't make it live so ce1
merges BB 4 just before insn 75:


(note 19 18 22 4 [bb 4] NOTE_INSN_BASIC_BLOCK)

(insn 22 19 23 4 pr43615.c:10 (set (reg:SI 86)
(sign_extend:SI (mem:QI (plus:SI (reg/v/f:SI 83 [ s ])
(const_int 1 [0x1])) [0 S1 A8]))) 96 {extendqisi2}
(expr_list:REG_DEAD (reg/v/f:SI 73 [ s ])
(nil)))

(insn 23 22 24 4 pr43615.c:10 (parallel [
(set (reg/v:SI 81 [ d ])
(plus:SI (reg:SI 86)
(const_int -48 [0xffd0])))
(clobber (reg:CC 17 flags))
]) 197 {*addsi_1} (expr_list:REG_DEAD (reg:SI 86)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil

(insn 24 23 25 4 pr43615.c:11 (set (reg:CC 17 flags)
(compare:CC (reg/v:SI 81 [ d ])
(const_int 9 [0x9]))) 6 {*cmpsi_1} (nil))

(jump_insn 25 24 26 4 pr43615.c:11 (set (pc)
(if_then_else (gtu (reg:CC 17 flags)
(const_int 0 [0x0]))
(label_ref:SI 68)
(pc))) 464 {*jcc_1} (expr_list:REG_DEAD (reg:CC 17 flags)
(expr_list:REG_BR_PROB (const_int 450 [0x1c2])
(nil)))
 - 68)

(note 26 25 75 5 [bb 5] NOTE_INSN_BASIC_BLOCK)

(insn 75 26 29 5 pr43615.c:10 (set (reg/v/f:SI 83 [ s ])
(reg/f:SI 95 [ s ])) -1 (expr_list:REG_EQUAL (plus:SI (reg/v/f:SI 83 [
s ])
(const_int 2 [0x2]))
(nil)))


with BB 11:


(note 67 68 5 11 [bb 11] NOTE_INSN_BASIC_BLOCK)

(insn 5 67 72 11 pr43615.c:12 (set (reg/v/f:SI 83 [ s ])
(const_int 0 [0x0])) 44 {*movsi_1} (nil))


yielding:


(note 19 18 22 4 [bb 4] NOTE_INSN_BASIC_BLOCK)

(insn 22 19 23 4 pr43615.c:10 (set (reg:SI 86)
(sign_extend:SI (mem:QI (plus:SI (reg/v/f:SI 83 [ s ])
(const_int 1 [0x1])) [0 S1 A8]))) 96 {extendqisi2}
(expr_list:REG_DEAD (reg/v/f:SI 73 [ s ])
(nil)))

(insn 23 22 5 4 pr43615.c:10 (parallel [
(set (reg/v:SI 81 [ d ])
(plus:SI (reg:SI 86)
(const_int -48 [0xffd0])))
(clobber (reg:CC 17 flags))
]) 197 {*addsi_1} (expr_list:REG_DEAD (reg:SI 86)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil

(insn 5 23 24 4 pr43615.c:12 (set (reg/v/f:SI 83 [ s ])
(const_int 0 [0x0])) 44 {*movsi_1} (nil))

(insn 24 5 25 4 pr43615.c:11 (set (reg:CC 17 flags)
(compare:CC (reg/v:SI 81 [ d ])
(const_int 9 [0x9]))) 6 {*cmpsi_1} (nil))

(jump_insn 25 24 26 4 pr43615.c:11 (set (pc)
(if_then_else (gtu (reg:CC 17 flags)
(const_int 0 [0x0]))
(label_ref:SI 46)
(pc))) 464 {*jcc_1} (expr_list:REG_DEAD (reg:CC 17 flags)
(expr_list:REG_BR_PROB (const_int 450 [0x1c2])
(nil)))
 - 46)

(insn 75 26 29 5 pr43615.c:10 (set (reg/v/f:SI 83 [ s ])
(reg/f:SI 95 [ s ])) -1 (expr_list:REG_EQUAL (plus:SI (reg/v/f:SI 83 [
s ])
(const_int 2 [0x2]))
(nil)))


and insn 5 now feeds the note.


[Bug tree-optimization/45722] [4.6 Regression] FAIL: gcc.c-torture/execute/20040709-2.c execution at -O1 and -Os

2010-11-14 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45722

--- Comment #35 from Eric Botcazou ebotcazou at gcc dot gnu.org 2010-11-14 
11:24:52 UTC ---
Author: ebotcazou
Date: Sun Nov 14 11:24:47 2010
New Revision: 166731

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=166731
Log:
PR tree-optimization/45722
* tree-sra.c (build_ref_for_model): Always build a COMPONENT_REF if
this is a reference to a component.
* ipa-prop.c (ipa_get_member_ptr_load_param): Accept COMPONENT_REF.
(ipa_note_param_call): Adjust comment.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-prop.c
trunk/gcc/tree-sra.c


[Bug c++/46304] [4.5 Regression] g++ crashes with ICE in bitmap_first_set_bit, at bitmap.c:770

2010-11-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46304

--- Comment #7 from Richard Guenther rguenth at gcc dot gnu.org 2010-11-14 
11:40:22 UTC ---
Even though it looks similar to PR45959 backporting the C++ revisions 165306
and 165307 does not fix the tree sharing problem on the 4.5 branch.


[Bug bootstrap/46474] New: [4.6 regression] powerpc64-linux bootstrap comparison failure in libcpp/symtab.o

2010-11-14 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46474

   Summary: [4.6 regression] powerpc64-linux bootstrap comparison
failure in libcpp/symtab.o
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: mi...@it.uu.se


gcc-4.6-20101113 (r166720) fails to bootstrap on powerpc64-linux:

Comparing stages 2 and 3
warning: gcc/cc1obj-checksum.o differs
warning: gcc/cc1objplus-checksum.o differs
warning: gcc/cc1-checksum.o differs
warning: gcc/cc1plus-checksum.o differs
Bootstrap comparison failure!
libcpp/symtab.o differs
make[2]: *** [compare] Error 1
make[2]: Leaving directory `/mnt/scratch/objdir46'
make[1]: *** [stage3-bubble] Error 2
make[1]: Leaving directory `/mnt/scratch/objdir46'
make: *** [bootstrap] Error 2

The previous weekly snapshot (20101106) bootstrapped w/o problems.

Configured as:
/mnt/scratch/gcc-4.6-20101113/configure
--with-gmp=/home/mikpe/pkgs/linux-ppc64/gmp-4.3.2
--with-mpfr=/home/mikpe/pkgs/linux-ppc64/mpfr-2.4.2
--with-mpc=/home/mikpe/pkgs/linux-ppc64/mpc-0.8.2 --disable-plugin
--disable-lto --disable-nls --enable-multilib --enable-threads=posix
--with-cpu=default32 --enable-checking=release --disable-libmudflap
--enable-languages=c,c++,objc,obj-c++,java,fortran


[Bug middle-end/44592] [4.5 Regression] wrong code at -O3

2010-11-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44592

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 AssignedTo|matz at gcc dot gnu.org |rguenth at gcc dot gnu.org

--- Comment #14 from Richard Guenther rguenth at gcc dot gnu.org 2010-11-14 
11:47:55 UTC ---
I will look at backporting the 4.6 variant.


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

2010-11-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44959

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2010.11.14 11:45:56
 Ever Confirmed|0   |1

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2010-11-14 
11:45:56 UTC ---
Please verify if 4.5.1 is still broken.


[Bug bootstrap/46474] [4.6 regression] powerpc64-linux bootstrap comparison failure in libcpp/symtab.o

2010-11-14 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46474

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr 2010-11-14 
11:58:51 UTC ---
I also see it on powerpc-apple-darwin9 (r166728, last bootstrap
r166379+patches).


[Bug libstdc++/46455] shared_ptr consuming too many semaphores on Windows

2010-11-14 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46455

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ktietz at gcc dot gnu.org

--- Comment #5 from Kai Tietz ktietz at gcc dot gnu.org 2010-11-14 11:58:43 
UTC ---
(In reply to comment #2)
 What's the value of __gnu_cxx::__default_lock_policy on Mingw?
 Is it the same for GCC 4.4 and 4.5?
 
 Between 4.4 and 4.5 there are some changes to the ghtr-win32.h file which
 provides the gthreads abstraction layer, but there are no significant changes
 to shared_ptr.  So for the moment I think it's either a change in the atomic
 operations supported by mingw or a change in the threading layer, not
 shared_ptr

Well, I've tested it with mingw-w64 toolchains (64-bit and 32-bit) and I
couldn't reproduce this issue. Nevertheless it could be related here to some
modifications done by mingw.org on their toolchain. So threading model is here
something to look for.

Kai


[Bug c/46462] [4.6 Regression] Revision 166700 caused new C test failures

2010-11-14 Thread bonzini at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46462

--- Comment #5 from Paolo Bonzini bonzini at gnu dot org 2010-11-14 13:10:45 
UTC ---
Author: bonzini
Date: Sun Nov 14 13:10:41 2010
New Revision: 166732

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=166732
Log:
2010-11-13  Paolo Bonzini  bonz...@gnu.org

PR c/46462
* c-decl.c (declspecs_add_type): Make variables with error types
integers.
* c-parser.c (c_parser_next_tokens_start_declaration): Two IDs
do not start a declaration before an Objective-C foreach.
(c_parser_declaration_or_fndef): Improve recovery after unknown
type name.
(c_parser_for_statement): Hoist entrance of foreach context
before ifs, add corresponding reset where it was missing.  Do
not set objc_could_be_foreach_context for C.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/c-decl.c
trunk/gcc/c-parser.c


[Bug fortran/46405] Preprocessor generated code can exceed 132 characters

2010-11-14 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46405

Thomas Koenig tkoenig at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2010.11.14 13:29:39
 CC||tkoenig at gcc dot gnu.org
 Ever Confirmed|0   |1

--- Comment #2 from Thomas Koenig tkoenig at gcc dot gnu.org 2010-11-14 
13:29:39 UTC ---
We _could_ set the line length to unlimited when invoking the preprocessor
automagically.

Would this be a good idea?  Hmm...


[Bug debug/46101] [4.6 Regression] ICE: in build_abbrev_table, at dwarf2out.c:10333 with -feliminate-dwarf2-dups -g

2010-11-14 Thread dodji at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46101

Dodji Seketeli dodji at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC|dseketel at redhat dot com  |dodji at gcc dot gnu.org
 AssignedTo|unassigned at gcc dot   |dodji at gcc dot gnu.org
   |gnu.org |


[Bug debug/46101] [4.6 Regression] ICE: in build_abbrev_table, at dwarf2out.c:10333 with -feliminate-dwarf2-dups -g

2010-11-14 Thread dodji at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46101

--- Comment #2 from Dodji Seketeli dodji at gcc dot gnu.org 2010-11-14 
14:15:06 UTC ---
I am currently testing the patch below:

From d16601c89e153c54ef017cca5db854898d9c6502 Mon Sep 17 00:00:00 2001
From: Dodji Seketeli do...@redhat.com
Date: Sun, 14 Nov 2010 12:55:34 +0100
Subject: [PATCH 1/2] Fix PR debug/46101

gcc/
* dwarf2out.c (lookup_type_die_strip_naming_typedef): New
function.
(gen_generic_params_dies, scope_die_for, gen_type_die_for_member):
Replace uses of lookup_type_die with use of
lookup_type_die_strip_naming_typedef.

gcc/testsuite/
* g++.dg/debug/dwarf2/typedef5.C: New test
---
 gcc/dwarf2out.c  |   28 +++--
 gcc/testsuite/g++.dg/debug/dwarf2/typedef5.C |   10 +
 2 files changed, 35 insertions(+), 3 deletions(-)
 create mode 100644 gcc/testsuite/g++.dg/debug/dwarf2/typedef5.C

diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 9bb569b..1094a9f 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -6160,6 +6160,7 @@ static void remove_child_TAG (dw_die_ref, enum
dwarf_tag);
 static void add_child_die (dw_die_ref, dw_die_ref);
 static dw_die_ref new_die (enum dwarf_tag, dw_die_ref, tree);
 static dw_die_ref lookup_type_die (tree);
+static dw_die_ref lookup_type_die_strip_naming_typedef (tree);
 static void equate_type_number_to_die (tree, dw_die_ref);
 static hashval_t decl_die_table_hash (const void *);
 static int decl_die_table_eq (const void *, const void *);
@@ -7920,6 +7921,27 @@ lookup_type_die (tree type)
   return TYPE_SYMTAB_DIE (type);
 }

+/* Like lookup_type_die, but if type is an anonymous type named by a
+   typedef[1], return the DIE of the anonymous type instead the one of
+   the naming typedef.  This is because in gen_typedef_die, we did
+   equate the anonymous struct named by the typedef with the DIE of
+   the naming typedef. So by default, lookup_type_die on an anonymous
+   struct yields the DIE of the naming typedef.
+
+   [1]: Read the comment of is_naming_typedef_decl to learn about what
+   a naming typedef is.  */
+
+static inline dw_die_ref
+lookup_type_die_strip_naming_typedef (tree type)
+{
+  dw_die_ref die = lookup_type_die (type);
+  if (TREE_CODE (type) == RECORD_TYPE
+   die-die_tag == DW_TAG_typedef
+   is_naming_typedef_decl (TYPE_NAME (type)))
+die = get_AT_ref (die, DW_AT_type);
+  return die;
+}
+
 /* Equate a DIE to a given type specifier.  */

 static inline void
@@ -12883,7 +12905,7 @@ gen_generic_params_dies (tree t)
 return;

   if (TYPE_P (t))
-die = lookup_type_die (t);
+die = lookup_type_die_strip_naming_typedef (t);
   else if (DECL_P (t))
 die = lookup_decl_die (t);

@@ -17763,7 +17785,7 @@ scope_die_for (tree t, dw_die_ref context_die)
 scope_die = comp_unit_die ();
 }
   else
-scope_die = lookup_type_die (containing_scope);
+scope_die = lookup_type_die_strip_naming_typedef (containing_scope);
 }
   else
 scope_die = context_die;
@@ -18590,7 +18612,7 @@ gen_type_die_for_member (tree type, tree member,
dw_die_ref context_die)
   gcc_assert (!decl_ultimate_origin (member));

   push_decl_scope (type);
-  type_die = lookup_type_die (type);
+  type_die = lookup_type_die_strip_naming_typedef (type);
   if (TREE_CODE (member) == FUNCTION_DECL)
 gen_subprogram_die (member, type_die);
   else if (TREE_CODE (member) == FIELD_DECL)
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/typedef5.C
b/gcc/testsuite/g++.dg/debug/dwarf2/typedef5.C
new file mode 100644
index 000..d9d058c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/typedef5.C
@@ -0,0 +1,10 @@
+// Origin: PR debug/46101
+// { dg-options -g -feliminate-dwarf2-dups }
+// { dg-do compile }
+
+typedef struct
+{
+  virtual void f () { }
+} A;
+
+A a;


[Bug target/46468] enabling -fomit-frame-pointer by default breaks Wine

2010-11-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46468

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

   What|Removed |Added

 CC|hjl at gcc dot gnu.org  |hjl.tools at gmail dot com

--- Comment #3 from H.J. Lu hjl.tools at gmail dot com 2010-11-14 15:03:09 
UTC ---
It sounds like Wine doesn't use unwind library provided by
gcc to unwind the Linux stack. When Wine unwinds Linux
stack, it has to use the gcc unwind library, NOT Windows
unwind library, to unwind Linux stack.


[Bug c/46475] New: [4.6 Regression] FAIL: gcc.dg/nofixed-point-2.c

2010-11-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46475

   Summary: [4.6 Regression] FAIL: gcc.dg/nofixed-point-2.c
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: hjl.to...@gmail.com


On Linux/ia32, revision 166732 gave

FAIL: gcc.dg/nofixed-point-2.c  (test for warnings, line 12)

Revision 166728 is OK.


[Bug c/46475] [4.6 Regression] FAIL: gcc.dg/nofixed-point-2.c

2010-11-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46475

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

   What|Removed |Added

 CC||bonzini at gnu dot org
   Target Milestone|--- |4.6.0

--- Comment #1 from H.J. Lu hjl.tools at gmail dot com 2010-11-14 15:34:11 
UTC ---
It may be caused by revision 166732:

http://gcc.gnu.org/ml/gcc-cvs/2010-11/msg00621.html


[Bug c/46475] [4.6 Regression] FAIL: gcc.dg/nofixed-point-2.c

2010-11-14 Thread bonzini at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46475

--- Comment #2 from Paolo Bonzini bonzini at gnu dot org 2010-11-14 15:47:03 
UTC ---
Author: bonzini
Date: Sun Nov 14 15:46:59 2010
New Revision: 166733

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=166733
Log:
2010-11-14  Paolo Bonzini  bonz...@gnu.org

PR c/46475
* gcc.dg/nofixed-point-2.c: Change dg-warning to dg-bogus.


Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/nofixed-point-2.c


[Bug c/46475] [4.6 Regression] FAIL: gcc.dg/nofixed-point-2.c

2010-11-14 Thread bonzini at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46475

--- Comment #3 from Paolo Bonzini bonzini at gnu dot org 2010-11-14 15:47:12 
UTC ---
I think I have to debug my test scripts.  I'm committing the change from
dg-warning to dg-bogus.


[Bug c/46475] [4.6 Regression] FAIL: gcc.dg/nofixed-point-2.c

2010-11-14 Thread bonzini at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46475

Paolo Bonzini bonzini at gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #4 from Paolo Bonzini bonzini at gnu dot org 2010-11-14 15:47:48 
UTC ---
fixed.


[Bug target/45365] X86 SSE FP add and multiply aren't commutative with 2 NaNs

2010-11-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45365

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

   What|Removed |Added

 Status|RESOLVED|REOPENED
   Last reconfirmed||2010.11.14 15:51:37
 CC||ubizjak at gmail dot com
 Resolution|WONTFIX |
 Ever Confirmed|0   |1

--- Comment #6 from H.J. Lu hjl.tools at gmail dot com 2010-11-14 15:51:37 
UTC ---
i386 backend should define HONOR_SNANS.


[Bug target/45365] X86 SSE FP add and multiply aren't commutative with 2 NaNs

2010-11-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45365

--- Comment #7 from H.J. Lu hjl.tools at gmail dot com 2010-11-14 15:53:28 
UTC ---
Does -fsignaling-nans work here?


[Bug tree-optimization/40436] [4.5/4.6 regression] 0.5% code size regression caused by r147852

2010-11-14 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40436

--- Comment #44 from Jan Hubicka hubicka at gcc dot gnu.org 2010-11-14 
16:16:35 UTC ---
OK, ialloc is because 4.3 folds:
  oldbit_430 = 0;
  D.12699_431 = oldbit_430  1;
  D.12698_462 = D.12699_431;
  D.12095_241 = D.12698_462;
  if (D.12095_241 != 0)
goto bb 71;
  else
goto bb 72;

In mainline the same sequence misses oldbit_430 = 0.

static __inline__ int
test_and_set_bit_simple(unsigned long nr, volatile void * addr)
{
 unsigned long reg1, reg2;
int oldbit;

return oldbit  1;
}





static __inline__ int
test_and_clear_bit_simple(unsigned long nr, volatile void * addr)
{
 unsigned long reg1, reg2;
int oldbit;


return oldbit  1;
}





static __inline__ int
test_and_change_bit_simple(unsigned long nr, volatile void * addr)
{
 unsigned long reg1, reg2;
int oldbit;


return oldbit  1;
}

So another source code bug.
Richard, do you remember if we dropped initialization by zero for uninitialized
vars?  

I am officially declaring kernel part of CSiBE irrelevant and will look at the
other tests.

Honza


[Bug c++/46476] New: Missing Warning about unreachable code after return

2010-11-14 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46476

   Summary: Missing Warning about unreachable code after return
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: paolo.carl...@oracle.com


It seems impossible to me that this issue has not been discussed already, but
in the library I fixed only two weeks ago a *very* stupid bug which went
unnoticed for *many* months exactly because of this. Couldn't believe that GCC
didn't warn even at -Wall -Wextra (and -O2). Thus:

int foo(int num)
{
  return num;
  ++num;  // Warn!
}

int bar(int num)
{
  return num;
  ++num;  // Warn!
  return num;
}

For the record, ICC *does* warn, with -Wall.


[Bug tree-optimization/3713] Pointers to functions or member functions are not folded or inlined

2010-11-14 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3713

--- Comment #28 from Paolo Carlini paolo.carlini at oracle dot com 2010-11-14 
17:11:21 UTC ---
For the record, my favorite example in the C++ library,
testsuite/performance/27_io/fmtflags_manipulators.cc, pretty simple, still
probably noticeable by many of our users, is by now perfectly optimized at -O2.
Many thanks.


[Bug c++/46298] constexpr ICE on ARM

2010-11-14 Thread rearnsha at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46298

--- Comment #4 from Richard Earnshaw rearnsha at gcc dot gnu.org 2010-11-14 
17:19:03 UTC ---
Jason - is this fixed now?  If so can you close this please.


[Bug c++/46476] Missing Warning about unreachable code after return

2010-11-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46476

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2010.11.14 17:38:28
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2010-11-14 
17:38:28 UTC ---
Confirmed.


[Bug bootstrap/46474] [4.6 regression] powerpc64-linux bootstrap comparison failure in libcpp/symtab.o

2010-11-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46474

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org
   Target Milestone|--- |4.6.0

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2010-11-14 
17:41:29 UTC ---
If it's due to the reported difference using fma and not using fma then
probably the tree fma code lacks checks for debug stmts.  Try

Index: tree-ssa-math-opts.c
===
--- tree-ssa-math-opts.c(revision 166717)
+++ tree-ssa-math-opts.c(working copy)
@@ -1534,6 +1534,9 @@

   use_stmt = USE_STMT (use_p);

+  if (is_gimple_debug (use_stmt))
+continue;
+
   /* For now restrict this operations to single basic blocks.  In theory
  we would want to support sinking the multiplication in
  m = a*b;
@@ -1603,10 +1606,14 @@
   FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, mul_result)
 {
   gimple_stmt_iterator gsi = gsi_for_stmt (use_stmt);
-  enum tree_code use_code = gimple_assign_rhs_code (use_stmt);
+  enum tree_code use_code;
   tree addop, mulop1, result = mul_result;
   bool negate_p = false;

+  if (is_gimple_debug (use_stmt))
+continue;
+
+  use_code = gimple_assign_rhs_code (use_stmt);
   if (use_code == NEGATE_EXPR)
 {
   result = gimple_assign_lhs (use_stmt);


[Bug libstdc++/46455] shared_ptr consuming too many semaphores on Windows

2010-11-14 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46455

--- Comment #6 from Jonathan Wakely redi at gcc dot gnu.org 2010-11-14 
17:50:21 UTC ---
if mingw.org modify GCC then this bug should be reported there, as I don't see
anything wrong in the libstdc++ code


[Bug bootstrap/46474] [4.6 regression] powerpc64-linux bootstrap comparison failure in libcpp/symtab.o

2010-11-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46474

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org 2010-11-14 
17:47:50 UTC ---
(In reply to comment #2)
 If it's due to the reported difference using fma and not using fma then
 probably the tree fma code lacks checks for debug stmts.  Try

If it is due to FMA code, then we have floating point in the gcc code which we
should remove.


[Bug tree-optimization/40436] [4.5/4.6 regression] 0.5% code size regression caused by r147852

2010-11-14 Thread rguenther at suse dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40436

--- Comment #45 from rguenther at suse dot de rguenther at suse dot de 
2010-11-14 17:38:46 UTC ---
On Sun, 14 Nov 2010, hubicka at gcc dot gnu.org wrote:

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40436
 
 --- Comment #44 from Jan Hubicka hubicka at gcc dot gnu.org 2010-11-14 
 16:16:35 UTC ---
 OK, ialloc is because 4.3 folds:
   oldbit_430 = 0;
   D.12699_431 = oldbit_430  1;
   D.12698_462 = D.12699_431;
   D.12095_241 = D.12698_462;
   if (D.12095_241 != 0)
 goto bb 71;
   else
 goto bb 72;
 
 In mainline the same sequence misses oldbit_430 = 0.
 
 static __inline__ int
 test_and_set_bit_simple(unsigned long nr, volatile void * addr)
 {
  unsigned long reg1, reg2;
 int oldbit;
 
 return oldbit  1;
 }
 
 
 
 
 
 static __inline__ int
 test_and_clear_bit_simple(unsigned long nr, volatile void * addr)
 {
  unsigned long reg1, reg2;
 int oldbit;
 
 
 return oldbit  1;
 }
 
 
 
 
 
 static __inline__ int
 test_and_change_bit_simple(unsigned long nr, volatile void * addr)
 {
  unsigned long reg1, reg2;
 int oldbit;
 
 
 return oldbit  1;
 }
 
 So another source code bug.
 Richard, do you remember if we dropped initialization by zero for 
 uninitialized
 vars?  

I don't even remember that we did that.  Btw, CCP should be able
to fold it with UNDEFINED given that  1 cannot yield zero (but
we're very conservative here now due to past bugs ...)


[Bug fortran/46339] [4.3/4.4/4.5/4.6 Regression] ICE (segfault) in gfc_trans_pointer_assignment

2010-11-14 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46339

--- Comment #5 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2010-11-14 
17:56:30 UTC ---
After getting rid of the segfault, it is clear the runtime results are wrong. 
It does look like the span is not getting set correctly. So I begin to look for
why it is not being set.


[Bug fortran/46339] [4.3/4.4/4.5/4.6 Regression] ICE (segfault) in gfc_trans_pointer_assignment

2010-11-14 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46339

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||pault at gcc dot gnu.org

--- Comment #6 from Tobias Burnus burnus at gcc dot gnu.org 2010-11-14 
18:13:14 UTC ---
(In reply to comment #5)
 After getting rid of the segfault, it is clear the runtime results are wrong. 
 It does look like the span is not getting set correctly. So I begin to look 
 for
 why it is not being set.

It might be that this is one of those issues which can only be solved with the
new array descriptor - but maybe one can also extend the hack to make it work.

Regarding related bugs, cf. PR 40737 and PR 38471

See also http://gcc.gnu.org/wiki/ArrayDescriptorUpdate


[Bug fortran/46339] [4.3/4.4/4.5/4.6 Regression] ICE (segfault) in gfc_trans_pointer_assignment

2010-11-14 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46339

--- Comment #7 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2010-11-14 
18:50:30 UTC ---
The code that sets the span is never reached.  I am studying this to see if I
can sort it out.  I think the problem is in trans_decl.c (gfc_get_symbol_decl).


[Bug fortran/46405] Preprocessor generated code can exceed 132 characters

2010-11-14 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46405

Jerry DeLisle jvdelisle at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jvdelisle at gcc dot
   ||gnu.org

--- Comment #3 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2010-11-14 
18:54:49 UTC ---
I was thinking this same solution.  But, maybe the user who is having the
problem should just do that. In that case this is not really a bug.  The
problem is not knowing this is the problem.  Is there a flag we can check and
just not truncate at 132 or whatever length if CPP?


[Bug tree-optimization/46367] [4.6 Regression] ICE during cgraph edge cloning

2010-11-14 Thread zsojka at seznam dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46367

--- Comment #4 from Zdenek Sojka zsojka at seznam dot cz 2010-11-14 19:09:16 
UTC ---
Created attachment 22393
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22393
reduced testcase

Doesn't need -m32.

$ gcc -O pr46367.C
gcc: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.


[Bug fortran/46405] Preprocessor generated code can exceed 132 characters

2010-11-14 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46405

--- Comment #4 from Tobias Burnus burnus at gcc dot gnu.org 2010-11-14 
19:16:10 UTC ---
(In reply to comment #2)
 We _could_ set the line length to unlimited when invoking the preprocessor
 automagically.
 Would this be a good idea?  Hmm...

I do not think that that's the proper solution. In that case you do not
distinguish between lines which are genuine too long and those which are only
too long due to the macro processing. I think if you want to have the latter,
you need to plug into libcpp and add a line-length check there.

Then, you can as a second step disable the line length check in the front-end
itself. 

(In reply to comment #3)
 I was thinking this same solution.  But, maybe the user who is having the
 problem should just do that.

I think that's the cleanest solution. After all, even if the line length is
only exceeded due to the CPP macro, it is still invaid Fortran.

 Is there a flag we can check and
 just not truncate at 132 or whatever length if CPP?

Well, there is gfc_cpp_enabled().


[Bug rtl-optimization/46395] [4.6 regression] FAIL: 22_locale/numpunct/members/pod/2.cc execution test

2010-11-14 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46395

--- Comment #1 from Andreas Schwab sch...@linux-m68k.org 2010-11-14 21:11:14 
UTC ---
That appears to be a bug in postreload in that it does not take exceptions into
account.  The change in rtl-opt/33721 just modifies the order how automatic
variables are allocated and triggers a match in
reload_combine_recognize_pattern.


[Bug bootstrap/44970] [4.6 regression] Revision 162270 failed to bootstrap

2010-11-14 Thread bonzini at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44970

--- Comment #98 from Paolo Bonzini bonzini at gnu dot org 2010-11-14 22:35:54 
UTC ---
Minimized testcase:

int f (unsigned long arg, int *cr)
{
  int *p = (int *) arg;
  int x = *cr;
  long pu_err = 0;
  if (x)
asm volatile (stw %2,0(%1): =r (pu_err): r (p), r (x));

  asm volatile (stw %2,0(%%sr3,%1): =r (pu_err): r (p), r (x));
  return pu_err;
}

Fails at -O2.


[Bug c/46477] New: GCC doesn't understand %c in asm instruction with -mcmodel=large

2010-11-14 Thread _kirpichev_ at mail dot ru
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46477

   Summary: GCC doesn't understand %c in asm instruction with
-mcmodel=large
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: _kirpich...@mail.ru


Hi,

I'm trying to compile the following code snippet:
#ifdef CONFIG_X86_32
# define __BUG_C0   2:\t.long 1b, %c0\n
#else
# define __BUG_C0   2:\t.long 1b - 2b, %c0 - 2b\n
#endif

#define BUG()   \
do {\
asm volatile(1:\tud2\n\
.pushsection __bug_table,\a\\n \
__BUG_C0   \
\t.word %c1, 0\n \
\t.org 2b+%c2\n  \
.popsection  \
: : i (__FILE__), i (__LINE__),\
i (10*sizeof(int)));   \
} while (0)

int main()
{
BUG();
}

And everything is ok until -mcmodel=large is used.

When I'm trying to use -mcmodel=large the following error appears:

main.c:24:9: error: invalid 'asm': operand is neither a constant nor a
condition code, invalid operand code 'c'

gcc -dumpversion
4.5


BTW, if I change %c on %P then everything is ok and generated code looks the
same, but I didn't find any documentation about %P.


[Bug bootstrap/44970] [4.6 regression] Revision 162270 failed to bootstrap

2010-11-14 Thread dave at hiauly1 dot hia.nrc.ca
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44970

--- Comment #99 from dave at hiauly1 dot hia.nrc.ca 2010-11-14 23:12:25 UTC ---
On Sun, 14 Nov 2010, bonzini at gnu dot org wrote:

 Minimized testcase:
 
 int f (unsigned long arg, int *cr)
 {
   int *p = (int *) arg;
   int x = *cr;
   long pu_err = 0;
   if (x)
 asm volatile (stw %2,0(%1): =r (pu_err): r (p), r (x));
 
   asm volatile (stw %2,0(%%sr3,%1): =r (pu_err): r (p), r (x));
   return pu_err;
 }
 
 Fails at -O2.

Cool!  The reduced code no longer makes any sense but it should compile.
I'm sure this was a fair bit of work.

Dave


[Bug bootstrap/44970] [4.6 regression] Revision 162270 failed to bootstrap

2010-11-14 Thread bonzini at gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44970

--- Comment #100 from Paolo Bonzini bonzini at gnu dot org 2010-11-14 
23:34:28 UTC ---
 Cool!  The reduced code no longer makes any sense but it should compile.
 I'm sure this was a fair bit of work.

Actually delta made all the work down to 31 lines of typedefs/structs and 35
lines of mostly-dead code.  All I did manually was remove the remaining Linux
structs (replacing them with multiple scalars), propagate constants, and little
more.

Anyway, I have a new patch that I'm bootstrapping; forward_propagate_asm wasn't
adjusting use-def info properly, and the new stricter checking caught that. 
To avoid code duplication the patch is a bit different from the other.  It's
more aesthetic differences than practical differences in behavior, but still I
prefer to test it first on x86_64 before posting it.  It should take only a day
or two.


[Bug fortran/46339] [4.3/4.4/4.5/4.6 Regression] ICE (segfault) in gfc_trans_pointer_assignment

2010-11-14 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46339

--- Comment #8 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2010-11-15 
06:43:24 UTC ---
Created attachment 22394
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22394
A sample runtime case

The sample runtime case.  The pointer is set to the specified element of the
vector which may be i the middle, Then the remaining values of the pointer
array are the elements in array order so it can cross the boundary between two
vectors in the array of vectors.


[Bug fortran/46339] [4.3/4.4/4.5/4.6 Regression] ICE (segfault) in gfc_trans_pointer_assignment

2010-11-14 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46339

Jerry DeLisle jvdelisle at gcc dot gnu.org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot   |jvdelisle at gcc dot
   |gnu.org |gnu.org

--- Comment #9 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2010-11-15 
06:50:58 UTC ---
Once I understood what I was seeing in the attachment.  The first patch and
this cleaner one, actually works.

Index: trans-expr.c
===
--- trans-expr.c(revision 166686)
+++ trans-expr.c(working copy)
@@ -4881,7 +4881,8 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gf

   /* If this is a subreference array pointer assignment, use the rhs
  descriptor element size for the lhs span.  */
-  if (expr1-symtree-n.sym-attr.subref_array_pointer)
+  if (expr1-symtree-n.sym-attr.subref_array_pointer
+   DECL_LANG_SPECIFIC (expr1-symtree-n.sym-backend_decl))
 {
   decl = expr1-symtree-n.sym-backend_decl;
   gfc_init_se (rse, NULL);


[Bug fortran/46339] [4.3/4.4/4.5/4.6 Regression] ICE (segfault) in gfc_trans_pointer_assignment

2010-11-14 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46339

--- Comment #10 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2010-11-15 
06:53:50 UTC ---
Created attachment 22395
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22395
An alternate patch that also works

This alternate patch also fixes the problem by initializing the lang_specific
info sooner.  I came up with this one when I though the other was not working.