[Bug middle-end/57370] [4.9 Regression] compile time hog in reassoc

2013-05-23 Thread Joost.VandeVondele at mat dot ethz.ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57370

--- Comment #4 from Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch 
---
I killed the compilation after 15h...


[Bug c++/57384] New: can't expand a parameter pack into a list of function types or function pointer types

2013-05-23 Thread eric.niebler at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57384

Bug ID: 57384
   Summary: can't expand a parameter pack into a list of function
types or function pointer types
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: eric.niebler at gmail dot com

I believe all of the following 4 test cases should pass:

  templatetypename ...Ts
  struct list
  {};

  templatetypename ...Ts
  struct S
  {
  using type1 = void(int...(Ts));// fails
  using type2 = listint...(Ts);// fails
  using type3 = void(int(*...)(Ts)); // fails
  using type4 = listint(*...)(Ts); // works with 4.7, fails with 4.8
  };

Currently (i.e. with gcc-4.8), 1-4 all fail. With gcc-4.7, (4) worked. I'm
compiling with -std=gnu++11


[Bug rtl-optimization/57381] [4.8/4.9 Regression] array of volatile pointers hangs gcc

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57381

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2013-05-23
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
   Target Milestone|--- |4.8.1
Summary|array of volatile pointers  |[4.8/4.9 Regression] array
   |hangs gcc   |of volatile pointers hangs
   ||gcc
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Mine.  Hangs in

0x00caeac6 in visit_use (use=0x76e3eee8)
at /space/rguenther/src/svn/trunk/gcc/tree-ssa-sccvn.c:3469
3469changed = visit_reference_op_store (lhs, rhs1, stmt);


[Bug rtl-optimization/57381] [4.8/4.9 Regression] array of volatile pointers hangs gcc

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57381

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
The usual a.b.c with volatile fields do not compare equal thing ...

Value numbering l_61$0$0$0_6 stmt = l_61$0$0$0_6 = MEM[(volatile int *[5][2][2]
*)*.LC0];
RHS MEM[(volatile int *[5][2][2] *)*.LC0] simplified to s.f2.f0 has constants
1
Setting value number of l_61$0$0$0_6 to s.f2.f0 (changed)

and s.f2.f0 never comparing equal because we unshare it in every iteration.
Which is because operand_equal_p compares the FIELD_DECLs of COMPONENT_REFs
after clearing OEP_CONSTANT_ADDRESS_OF but those have TREE_SIDE_EFFECTS set
as well and we hit

  /* If ARG0 and ARG1 are the same SAVE_EXPR, they are necessarily equal.
 We don't care about side effects in that case because the SAVE_EXPR
 takes care of that for us. In all other cases, two expressions are
 equal if they have no side effects.  If we have two identical
 expressions with side effects that should be treated the same due
 to the only side effects being identical SAVE_EXPR's, that will
 be detected in the recursive calls below.
 If we are taking an invariant address of two identical objects
 they are necessarily equal as well.  */
  if (arg0 == arg1  ! (flags  OEP_ONLY_CONST)
   (TREE_CODE (arg0) == SAVE_EXPR
  || (flags  OEP_CONSTANT_ADDRESS_OF)
  || (! TREE_SIDE_EFFECTS (arg0)  ! TREE_SIDE_EFFECTS (arg1
return 1;


[Bug target/53854] ICE in find_constant_pool_ref

2013-05-23 Thread dan at danny dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53854

--- Comment #6 from Dan Horák dan at danny dot cz ---
FYI the error is still present in
gcc version 4.8.0 20130412 (Red Hat 4.8.0-2) (GCC) 

Target: s390-redhat-linux

[Bug tree-optimization/57380] [4.7/4.8/4.9 Regression] GCC 4.9.0 will not vectorize std::max and similar functions

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57380

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2013-05-23
  Known to work||4.5.4
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
   Target Milestone|--- |4.7.4
Summary|GCC 4.9.0 will not  |[4.7/4.8/4.9 Regression]
   |vectorize std::max and  |GCC 4.9.0 will not
   |similar functions   |vectorize std::max and
   ||similar functions
 Ever confirmed|0   |1

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
For some reason phiprop doesn't work here.  I'll investigate, but I guess
it is because the addresses are not constant but depend on the loop IV:

  bb 3:
  _3 = b.data[i_2];
  _4 = a.data[i_2];
  _10 = MEM[(const int )a].data[i_2];
  _11 = MEM[(const int )b].data[i_2];
  if (_10  _11)
goto bb 5;
  else
goto bb 4;

  bb 4:

  bb 5:
  # iftmp.0_12 = PHI _3(3), _4(4)

  bb 6:
  _6 = *iftmp.0_12;


[Bug target/57379] [4.9 Regression]: Segfault in invalidate_any_buried_refs (x=0x0) at ../../gcc-svn/trunk/gcc/gcse.c:3850

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57379

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.9.0


[Bug c++/57378] gnu multiversioning gives assembler error: foo.resolver is already defined

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57378

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-05-23
 CC||tmsriram at google dot com
Version|unknown |4.8.0
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Confirmed.


[Bug c++/57384] can't expand a parameter pack into a list of function types or function pointer types

2013-05-23 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57384

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
(In reply to Eric Niebler from comment #0)
 I believe all of the following 4 test cases should pass:

I'll leave it to someone else to rule on that, they make my head hurt ;)

I will note that this works:

  using type2 = listint(Ts)...;

and this works:

  using type4 = listint(*)(Ts)...;

And of course all these work:

  templateclass X 
using F = int(X);   
  using type1 = void(FTs...); 
  using type2 = listFTs...;
  templateclass X 
using Fp = int(*)(X);   
  using type3 = void(FpTs...);   
  using type4 = listFpTs...;


[Bug tree-optimization/57380] [4.7/4.8/4.9 Regression] GCC 4.9.0 will not vectorize std::max and similar functions

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57380

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
There was a deliberate change to require at least one invariant address or
a re-use of a previous load.

 2010-07-08  Richard Guenther  rguent...@suse.de

+   PR tree-optimization/44831
+   * tree-ssa-phiprop.c (phiprop_insert_phi): Properly build
+   a MEM_REF preserving TBAA info of the original dereference.
+   Dereference the original pointer if the address is not
+   invariant.
+   (propagate_with_phi): Fixup type checks wrt MEM_REFs.  Require
+   at least one invariant address that we are going to dereference.

I have a fix.


[Bug rtl-optimization/57344] [4.7 Regression] wrong code with pragma pack(1) and -O1 on x86

2013-05-23 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57344

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.8.1, 4.9.0
Summary|[4.7/4.8/4.9 Regression]|[4.7 Regression] wrong code
   |wrong code with pragma  |with pragma pack(1) and -O1
   |pack(1) and -O1 on x86  |on x86
  Known to fail|4.9.0   |

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Thu May 23 09:17:34 2013
New Revision: 199238

URL: http://gcc.gnu.org/viewcvs?rev=199238root=gccview=rev
Log:
PR middle-end/57344
* expmed.c (store_split_bit_field): If op0 is a REG or
SUBREG of a REG, don't lower unit.  Handle unit not being
always BITS_PER_WORD.

* gcc.c-torture/execute/pr57344-1.c: New test.
* gcc.c-torture/execute/pr57344-2.c: New test.
* gcc.c-torture/execute/pr57344-3.c: New test.
* gcc.c-torture/execute/pr57344-4.c: New test.

Added:
trunk/gcc/testsuite/gcc.c-torture/execute/pr57344-1.c
trunk/gcc/testsuite/gcc.c-torture/execute/pr57344-2.c
trunk/gcc/testsuite/gcc.c-torture/execute/pr57344-3.c
trunk/gcc/testsuite/gcc.c-torture/execute/pr57344-4.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/expmed.c
trunk/gcc/testsuite/ChangeLog

Author: jakub
Date: Thu May 23 09:18:57 2013
New Revision: 199239

URL: http://gcc.gnu.org/viewcvs?rev=199239root=gccview=rev
Log:
PR middle-end/57344
* expmed.c (store_split_bit_field): If op0 is a REG or
SUBREG of a REG, don't lower unit.  Handle unit not being
always BITS_PER_WORD.

* gcc.c-torture/execute/pr57344-1.c: New test.
* gcc.c-torture/execute/pr57344-2.c: New test.
* gcc.c-torture/execute/pr57344-3.c: New test.
* gcc.c-torture/execute/pr57344-4.c: New test.

Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.c-torture/execute/pr57344-1.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.c-torture/execute/pr57344-2.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.c-torture/execute/pr57344-3.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.c-torture/execute/pr57344-4.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/expmed.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog

Fixed for 4.8/4.9+ so far.


[Bug middle-end/57366] gcc.dg/lto/attr-weakref-1 FAILs

2013-05-23 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57366

--- Comment #7 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE ---
 --- Comment #2 from Rainer Orth ro at gcc dot gnu.org ---
 (In reply to Jan Hubicka from comment #1)
 I solved the infinite loop problem on plugin enabled setups with
 http://gcc.gnu.org/ml/gcc-patches/2013-05/msg00847.html
 Are you still seeing the infinite loop?

 My last bootstrap with gld was at rev 199009, i.e. before that patch went in. 
 New ones are currently running (as/ld though, thus it will take a bit to 
 verify
 that the failures with gld are gone).

That gas/gld bootstrap has now completed and the failures are indeed gone.

Thanks.
Rainer


[Bug target/57341] [4.8/4.9 Regression] wrong code on x86_64-linux at -O3 in 32-bit mode

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57341

--- Comment #9 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Thu May 23 08:37:24 2013
New Revision: 199237

URL: http://gcc.gnu.org/viewcvs?rev=199237root=gccview=rev
Log:
2013-05-23  Richard Biener  rguent...@suse.de

PR rtl-optimization/57341
* ira.c (validate_equiv_mem_from_store): Use anti_dependence
instead of true_dependence.

* gcc.dg/torture/pr57341.c: New testcase.

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


[Bug rtl-optimization/57381] [4.8 Regression] array of volatile pointers hangs gcc

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57381

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.9.0
   Target Milestone|4.8.1   |4.8.2
Summary|[4.8/4.9 Regression] array  |[4.8 Regression] array of
   |of volatile pointers hangs  |volatile pointers hangs gcc
   |gcc |
  Known to fail||4.8.1

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Thu May 23 10:08:33 2013
New Revision: 199240

URL: http://gcc.gnu.org/viewcvs?rev=199240root=gccview=rev
Log:
2013-05-23  Richard Biener  rguent...@suse.de

PR middle-end/57381
* fold-const.c (operand_equal_p): Compare FIELD_DECLs with
OEP_CONSTANT_ADDRESS_OF retained.

* gcc.dg/torture/pr57381.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr57381.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/fold-const.c
trunk/gcc/testsuite/ChangeLog


[Bug target/57341] [4.8/4.9 Regression] wrong code on x86_64-linux at -O3 in 32-bit mode

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57341

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #10 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Thu May 23 10:36:55 2013
New Revision: 199242

URL: http://gcc.gnu.org/viewcvs?rev=199242root=gccview=rev
Log:
2013-05-23  Richard Biener  rguent...@suse.de

PR rtl-optimization/57341
* ira.c (validate_equiv_mem_from_store): Use anti_dependence
instead of true_dependence.

* gcc.dg/torture/pr57341.c: New testcase.

Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/torture/pr57341.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/ira.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog


[Bug middle-end/57287] GCC 4.9.0 fails to build GDB on Ubuntu 12.04

2013-05-23 Thread muhammad_bilal at mentor dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57287

--- Comment #4 from hmb muhammad_bilal at mentor dot com ---
I am attaching the all preprocessed source code of GDB
here is the link https://www.dropbox.com/s/ldml34p3lov867w/gcc-bug.zip


[Bug middle-end/57287] GCC 4.9.0 fails to build GDB on Ubuntu 12.04

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57287

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |NEW

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
Confirmed with -O2 -Wall.


[Bug middle-end/57287] GCC 4.9.0 fails to build GDB on Ubuntu 12.04

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57287

--- Comment #6 from Richard Biener rguenth at gcc dot gnu.org ---
Created attachment 30172
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30172action=edit
preprocessed source


[Bug middle-end/57366] gcc.dg/lto/attr-weakref-1 FAILs

2013-05-23 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57366

--- Comment #8 from Jan Hubicka hubicka at gcc dot gnu.org ---
Thanks. Obviously RTL world translates through the weakrefs w/o LTO but not
with LTO.  I will look into it.


[Bug tree-optimization/57385] New: [tree-ssa] Possible segfault in fully_constant_vn_reference_p

2013-05-23 Thread aivchenk at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57385

Bug ID: 57385
   Summary: [tree-ssa] Possible segfault in
fully_constant_vn_reference_p
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: aivchenk at gmail dot com
CC: aivchenk at gmail dot com

The following code crashes android ndk gcc-4.6 on 64 bit windows with segfault 
on at least -O1:

int c;

void foo(int f)
{
int wbi=-1;
c = (f ? 012346:01345:6008)[wbi];
}

However, potentially it can appear on trunk as well: the reason for this is
that in fully_constant_vn_reference_p we have a bound violation:

1303|   if (arg0-opcode == STRING_CST
1304|(TYPE_MODE (op-type)
1305|   == TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0-op0
1306|GET_MODE_CLASS (TYPE_MODE (op-type)) == MODE_INT
1307|GET_MODE_SIZE (TYPE_MODE (op-type)) == 1
1308|compare_tree_int (op-op0, TREE_STRING_LENGTH (arg0-op0)) 
0)
1309| return build_int_cst_type (op-type,
1310+   (TREE_STRING_POINTER (arg0-op0)
1311| [TREE_INT_CST_LOW (op-op0)]));

here the TREE_INT_CST_LOW (op-op0) is 0x (wbi from the code snippet
above and int_cst.low is unsigned). but here:

1308|compare_tree_int (op-op0, TREE_STRING_LENGTH (arg0-op0)) 
0)

compare_tree_int thinks that op-op0 equals to -1 and so the check for bound
violation passes.

I think we need to add another check that op-op0 is not less than zero here.


[Bug tree-optimization/57385] [tree-ssa] Possible segfault in fully_constant_vn_reference_p

2013-05-23 Thread aivchenk at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57385

--- Comment #1 from Alexander Ivchenko aivchenk at gmail dot com ---
Following fix could solve the problem:

diff --git a/gcc-4.6/gcc/tree-ssa-sccvn.c b/gcc-4.6/gcc/tree-ssa-sccvn.c
index eb88969..704a86c 100644
--- a/gcc-4.6/gcc/tree-ssa-sccvn.c
+++ b/gcc-4.6/gcc/tree-ssa-sccvn.c
@@ -1115,6 +1115,7 @@ fully_constant_vn_reference_p (vn_reference_t ref)
  == TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0-op0
   GET_MODE_CLASS (TYPE_MODE (op-type)) == MODE_INT
   GET_MODE_SIZE (TYPE_MODE (op-type)) == 1
+  tree_int_cst_sgn (op-op0) = 0
   compare_tree_int (op-op0, TREE_STRING_LENGTH (arg0-op0))  0)
return build_int_cst_type (op-type,
   (TREE_STRING_POINTER (arg0-op0)


[Bug tree-optimization/57380] [4.7/4.8 Regression] GCC 4.9.0 will not vectorize std::max and similar functions

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57380

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.9.0
Summary|[4.7/4.8/4.9 Regression]|[4.7/4.8 Regression] GCC
   |GCC 4.9.0 will not  |4.9.0 will not vectorize
   |vectorize std::max and  |std::max and similar
   |similar functions   |functions
  Known to fail|4.9.0   |4.8.1

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Thu May 23 12:23:59 2013
New Revision: 199246

URL: http://gcc.gnu.org/viewcvs?rev=199246root=gccview=rev
Log:
2013-05-23  Richard Biener  rguent...@suse.de

PR tree-optimization/57380
* tree-ssa-phiprop.c (propagate_with_phi): Do not require at
least one invariant or re-used load.
* passes.c (init_optimization_passes): Move pass_phiprop before
pass_forwprop.

* g++.dg/tree-ssa/pr57380.C: New testcase.

Added:
trunk/gcc/testsuite/g++.dg/tree-ssa/pr57380.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/passes.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-phiprop.c


[Bug tree-optimization/57385] [tree-ssa] Possible segfault in fully_constant_vn_reference_p

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57385

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
True.  Please post to gcc-patches and do a bootstrap/test with it.


[Bug tree-optimization/57385] [tree-ssa] Possible segfault in fully_constant_vn_reference_p

2013-05-23 Thread aivchenk at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57385

--- Comment #3 from Alexander Ivchenko aivchenk at gmail dot com ---
Testing is in progress, will send to gcc-patches rigth after that.


[Bug target/56446] Generate one fewer relocation when calling a checked weakref function

2013-05-23 Thread hubicka at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56446

Jan Hubicka hubicka at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org

--- Comment #9 from Jan Hubicka hubicka at gcc dot gnu.org ---
default_binds_local_p should do the job, but it doesn't follow the aliases.
With LTO the weakref target can be brought local and then the weakref can be
translated to normal static alias, but we don't do this at the moment.
I am in progress of making my mind on when this is valid.

Honza


[Bug libstdc++/57386] New: ICE: hash-long-double-tr1-aux.cc:54:7: error: unrecognizable insn

2013-05-23 Thread stigge at antcom dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57386

Bug ID: 57386
   Summary: ICE: hash-long-double-tr1-aux.cc:54:7: error:
unrecognizable insn
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: stigge at antcom dot de

Created attachment 30173
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30173action=edit
debug file from ICE

ICE: hash-long-double-tr1-aux.cc:54:7: error: unrecognizable insn

Hi,

on powerpc SPE (e500v2) native compiling of gcc 4.8.0 (on current Debian
sid), I get:

libtool: compile:  /home/ernie/gcc-4.8-4.8.0/build/./gcc/xgcc -shared-libgcc
-B/home/ernie/gcc-4.8-4.8.0/build/./gcc -nostdinc++
-L/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/src
-L/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/src/.libs
-B/usr/powerpc-linux-gnuspe/bin/ -B/usr/powerpc-linux-gnuspe/lib/ -isystem
/usr/powerpc-linux-gnuspe/include -isystem
/usr/powerpc-linux-gnuspe/sys-include -isystem
/home/ernie/gcc-4.8-4.8.0/build/sys-include
-I/home/ernie/gcc-4.8-4.8.0/src/libstdc++-v3/../libgcc
-I/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/include/powerpc-linux-gnuspe
-I/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/include
-I/home/ernie/gcc-4.8-4.8.0/src/libstdc++-v3/libsupc++ -D_GLIBCXX_SHARED
-fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi
-fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-frandom-seed=hash_tr1.lo -gdwarf-4 -g3 -O0 -c
../../../../../../src/libstdc++-v3/src/c++98/hash_tr1.cc  -fPIC -DPIC
-D_GLIBCXX_SHARED -o hash_tr1.o
/bin/bash ../../../libtool --tag CXX --tag disable-shared   --mode=compile
/home/ernie/gcc-4.8-4.8.0/build/./gcc/xgcc -shared-libgcc
-B/home/ernie/gcc-4.8-4.8.0/build/./gcc -nostdinc++
-L/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/src
-L/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/src/.libs
-B/usr/powerpc-linux-gnuspe/bin/ -B/usr/powerpc-linux-gnuspe/lib/ -isystem
/usr/powerpc-linux-gnuspe/include -isystem
/usr/powerpc-linux-gnuspe/sys-include -isystem
/home/ernie/gcc-4.8-4.8.0/build/sys-include   
-I/home/ernie/gcc-4.8-4.8.0/src/libstdc++-v3/../libgcc
-I/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/include/powerpc-linux-gnuspe
-I/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/include
-I/home/ernie/gcc-4.8-4.8.0/src/libstdc++-v3/libsupc++  -prefer-pic
-D_GLIBCXX_SHARED -fno-implicit-templates -Wall -Wextra -Wwrite-strings
-Wcast-qual -Wabi  -fdiagnostics-show-location=once   -ffunction-sections
-fdata-sections  -frandom-seed=hashtable_tr1.lo -gdwarf-4 -g3 -O0  -c -o
hashtable_tr1.lo ../../../../../../src/libstdc++-v3/src/c++98/hashtable_tr1.cc
libtool: compile:  /home/ernie/gcc-4.8-4.8.0/build/./gcc/xgcc -shared-libgcc
-B/home/ernie/gcc-4.8-4.8.0/build/./gcc -nostdinc++
-L/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/src
-L/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/src/.libs
-B/usr/powerpc-linux-gnuspe/bin/ -B/usr/powerpc-linux-gnuspe/lib/ -isystem
/usr/powerpc-linux-gnuspe/include -isystem
/usr/powerpc-linux-gnuspe/sys-include -isystem
/home/ernie/gcc-4.8-4.8.0/build/sys-include
-I/home/ernie/gcc-4.8-4.8.0/src/libstdc++-v3/../libgcc
-I/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/include/powerpc-linux-gnuspe
-I/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/include
-I/home/ernie/gcc-4.8-4.8.0/src/libstdc++-v3/libsupc++ -D_GLIBCXX_SHARED
-fno-implicit-templates -Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi
-fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-frandom-seed=hashtable_tr1.lo -gdwarf-4 -g3 -O0 -c
../../../../../../src/libstdc++-v3/src/c++98/hashtable_tr1.cc  -fPIC -DPIC
-D_GLIBCXX_SHARED -o hashtable_tr1.o
/bin/bash ../../../libtool --tag CXX --tag disable-shared   --mode=compile
/home/ernie/gcc-4.8-4.8.0/build/./gcc/xgcc -shared-libgcc
-B/home/ernie/gcc-4.8-4.8.0/build/./gcc -nostdinc++
-L/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/src
-L/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/src/.libs
-B/usr/powerpc-linux-gnuspe/bin/ -B/usr/powerpc-linux-gnuspe/lib/ -isystem
/usr/powerpc-linux-gnuspe/include -isystem
/usr/powerpc-linux-gnuspe/sys-include -isystem
/home/ernie/gcc-4.8-4.8.0/build/sys-include   
-I/home/ernie/gcc-4.8-4.8.0/src/libstdc++-v3/../libgcc
-I/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/include/powerpc-linux-gnuspe
-I/home/ernie/gcc-4.8-4.8.0/build/powerpc-linux-gnuspe/libstdc++-v3/include
-I/home/ernie/gcc-4.8-4.8.0/src/libstdc++-v3/libsupc++  -prefer-pic
-D_GLIBCXX_SHARED -fno-implicit-templates -Wall -Wextra -Wwrite-strings
-Wcast-qual -Wabi  -fdiagnostics-show-location=once   

[Bug middle-end/57366] gcc.dg/lto/attr-weakref-1 FAILs

2013-05-23 Thread hubicka at ucw dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57366

--- Comment #9 from Jan Hubicka hubicka at ucw dot cz ---
Hi,
the following patch sets IDENTIFIER_TRANSPARENT_ALIAS correctly from lto-symtab
(correct fix should do the same for variable aliases, too).  Now the testcase
compiles for
me on Linux with weakref disabled.  Does it work for you?
I can not bootstrap with the weakref disabling hack because of some
transational memory issue, but I think it is independent.

Honza

Index: lto-symtab.c
===
--- lto-symtab.c(revision 199251)
+++ lto-symtab.c(working copy)
@@ -623,6 +623,15 @@ lto_symtab_merge_cgraph_nodes (void)
   if ((cnode-thunk.thunk_p || cnode-alias)
cnode-thunk.alias  DECL_P (cnode-thunk.alias))
 cnode-thunk.alias = lto_symtab_prevailing_decl (cnode-thunk.alias);
+#ifndef ASM_OUTPUT_WEAKREF
+  if (lookup_attribute (weakref, DECL_ATTRIBUTES (cnode-symbol.decl)))
+{
+  IDENTIFIER_TRANSPARENT_ALIAS (DECL_ASSEMBLER_NAME (cnode-symbol.decl))
= 1;
+  TREE_CHAIN (DECL_ASSEMBLER_NAME (cnode-symbol.decl))
+  = (DECL_P (cnode-thunk.alias) ? DECL_ASSEMBLER_NAME
(cnode-thunk.alias)
+ : cnode-thunk.alias);
+}
+#endif
   cnode-symbol.aux = NULL;
 }
   FOR_EACH_VARIABLE (vnode)


[Bug middle-end/57347] [4.8/4.9 Regression] wrong code for bitfield on x86_64-linux at -Os and above

2013-05-23 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57347

--- Comment #5 from Martin Jambor jamborm at gcc dot gnu.org ---
Author: jamborm
Date: Thu May 23 13:20:41 2013
New Revision: 199252

URL: http://gcc.gnu.org/viewcvs?rev=199252root=gccview=rev
Log:
2013-05-22  Martin Jambor  mjam...@suse.cz

PR middle-end/57347
* tree.h (contains_bitfld_component_ref_p): Declare.
* tree-sra.c (contains_bitfld_comp_ref_p): Move...
* tree.c (contains_bitfld_component_ref_p): ...here.  Adjust its caller.
* ipa-prop.c (determine_known_aggregate_parts): Check that LHS does
not access a bit-field.  Assert all final offsets are byte-aligned.

testsuite/
* gcc.dg/ipa/pr57347.c: New test.


Added:
trunk/gcc/testsuite/gcc.dg/ipa/pr57347.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-prop.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-sra.c
trunk/gcc/tree.c
trunk/gcc/tree.h


[Bug middle-end/57347] [4.8/4.9 Regression] wrong code for bitfield on x86_64-linux at -Os and above

2013-05-23 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57347

Martin Jambor jamborm at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #6 from Martin Jambor jamborm at gcc dot gnu.org ---
Author: jamborm
Date: Thu May 23 13:25:23 2013
New Revision: 199253

URL: http://gcc.gnu.org/viewcvs?rev=199253root=gccview=rev
Log:
2013-05-23  Martin Jambor  mjam...@suse.cz

PR middle-end/57347
* tree.h (contains_bitfld_component_ref_p): Declare.
* tree-sra.c (contains_bitfld_comp_ref_p): Move...
* tree.c (contains_bitfld_component_ref_p): ...here.  Adjust its caller.
* ipa-prop.c (determine_known_aggregate_parts): Check that LHS does
not access a bit-field.  Assert all final offsets are byte-aligned.

testsuite/
* gcc.dg/ipa/pr57347.c: New test.


Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/ipa/pr57347.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/ipa-prop.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog
branches/gcc-4_8-branch/gcc/tree-sra.c
branches/gcc-4_8-branch/gcc/tree.c
branches/gcc-4_8-branch/gcc/tree.h


[Bug c++/57387] New: Passing parameter pack to emplace stl function cause compilation bug

2013-05-23 Thread avraammauridis at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57387

Bug ID: 57387
   Summary: Passing parameter pack to emplace stl function cause
compilation bug
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: avraammauridis at gmail dot com

Created attachment 30174
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30174action=edit
bug output

g++ -std=c++0x stlstudy.cc
‘
Internal compiler error: Error reporting routines re-entered.
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/cc7q32tE.out file, please attach this to
your bugreport.

[Bug middle-end/57287] GCC 4.9.0 fails to build GDB on Ubuntu 12.04

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57287

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||xinliangli at gmail dot com

--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org ---
tree-ssa-uninit.c somehow fails to properly handle abnormal edges.

Index: tree-ssa-uninit.c
===
--- tree-ssa-uninit.c   (revision 199249)
+++ tree-ssa-uninit.c   (working copy)
@@ -1919,7 +1919,8 @@ find_uninit_use (gimple phi, unsigned un
 }

   worklist-safe_push (use_stmt);
-  pointer_set_insert (possibly_undefined_names, phi_result);
+ if (!SSA_NAME_OCCURS_IN_ABNORMAL_PHI (phi_result))
+   pointer_set_insert (possibly_undefined_names, phi_result);
 }
 }

fixes the issue but that doesn't look the very best place to fix it
and it doesn't look fully correct.  It should be enough to not consider
values flowing across abnormal edges - but that's already done (but somehow
not in a complete manner).

I'm trying to reduce the testcase to get a better idea what is going wrong
here.


[Bug libstdc++/57386] ICE: hash-long-double-tr1-aux.cc:54:7: error: unrecognizable insn

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57386

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Target||powerpc-spe
 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2013-05-23
   Host||powerpc-spe
 Ever confirmed|0   |1
  Build||powerpc-spe

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Can you check gcc 4.8.1 RC1?


[Bug debug/57351] ICE: internal compiler error: in dbx_reg_number, at dwarf2out.c:10507 on arm-none-eabi

2013-05-23 Thread chrbr at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57351

chrbr at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #16 from chrbr at gcc dot gnu.org ---
Fixed on trunk #199261.


[Bug c++/57387] Passing parameter pack to emplace stl function cause compilation bug

2013-05-23 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57387

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.8.0

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Seems to be fixed for 4.8 already.


[Bug middle-end/57287] GCC 4.9.0 fails to build GDB on Ubuntu 12.04

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57287

--- Comment #8 from Richard Biener rguenth at gcc dot gnu.org ---
Created attachment 30175
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30175action=edit
somewhat reduced testcase

Autoreduced on level 0.


[Bug middle-end/57287] GCC 4.9.0 fails to build GDB on Ubuntu 12.04

2013-05-23 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57287

--- Comment #9 from Richard Biener rguenth at gcc dot gnu.org ---
Created attachment 30176
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30176action=edit
more reduced


[Bug c++/57388] New: [C++11] ICE when function types with ref-qualifiers meet other function types

2013-05-23 Thread daniel.kruegler at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57388

Bug ID: 57388
   Summary: [C++11] ICE when function types with ref-qualifiers
meet other function types
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: daniel.kruegler at googlemail dot com

While attempting to upgrade std::function for functions with ref-qualifiers I
found that the following code gives an ICE for gcc 4.9.0 20130519
(experimental). The compiler flags are:

-std=c++11 -Wall -pedantic

//--
templateclass struct A
{
  static constexpr bool value = false;
};

templateclass Res, class... Args
struct ARes(Args...)
{
  static constexpr bool value = true;
};

templateclass Res, class... Args
struct ARes(Args...) const 
{
  static constexpr bool value = true;
};

templateclass Res, class... Args
struct ARes(Args...) const 
{
  static constexpr bool value = true;
};

static_assert(Avoid()::value, Ouch);
static_assert(Avoid() const ::value, ); // #1
static_assert(Avoid() const ::value, ); // #2
//--

The error being (at line #1 or if this is commented on line #2):

main.cpp|25|internal compiler error: canonical types differ for identical
types void() const  and void() const 

The conditions seem to depend on type ordering. The ICE doesn't occur, when the
last three lines are inverted to

static_assert(Avoid() const ::value, );
static_assert(Avoid() const ::value, );
static_assert(Avoid()::value, Ouch);

or if typedefs are introduces for functions with ref-qualifiers up-front such
as in the following replacement of the last three lines:

typedef void FClref() const ;
static_assert(Avoid()::value, Ouch);
static_assert(Avoid() const ::value, );
static_assert(Avoid() const ::value, );

Interestingly the following variant

typedef void FClref() const ;
static_assert(Avoid()::value, Ouch);
static_assert(Avoid() const ::value, ); // #1
static_assert(Avoid() const ::value, );

still ICEs for #1 (but the previous one didn't ICE on the last line)


[Bug c++/57384] can't expand a parameter pack into a list of function types or function pointer types

2013-05-23 Thread daniel.kruegler at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57384

--- Comment #2 from Daniel Krügler daniel.kruegler at googlemail dot com ---
I have the impression that this *could* be related to

http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1488

This is unchecked yet, because I'm leaving my place here.

[Bug c++/57388] [C++11] ICE when function types with ref-qualifiers meet other function types

2013-05-23 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57388

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com ---
Let's add Jason in CC.


[Bug c++/57319] [4.8 Regression]: bogus defaulted move assignment for ... calls a non-trivial move assignment operator for virtual base ...

2013-05-23 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57319

--- Comment #3 from Paul Pluzhnikov ppluzhnikov at google dot com ---
Thanks for the fix.
Confirmed for both the reduced test case, and the original source.

Can this be back-ported to 4.8 branch?


[Bug libstdc++/54354] TODO extended iomanip manipulators std::get_time and std::put_time (C++11, section 27.7.5)

2013-05-23 Thread dmorilha at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54354

Daniel Morilha dmorilha at gmail dot com changed:

   What|Removed |Added

 CC||dmorilha at gmail dot com

--- Comment #3 from Daniel Morilha dmorilha at gmail dot com ---
any update on that? is there any workaround? I am trying to parse from ISO 8601
date/time format to C++11 time_points and relied on std::get_time to do the
parsing work. Any ideas on how to accomplish that by other means? Thanks


[Bug target/49146] segv from libgcc_s when raising an exception, or unwinding stack with backtrace with ms_abi

2013-05-23 Thread woodard at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49146

Ben Woodard woodard at redhat dot com changed:

   What|Removed |Added

  Attachment #30127|0   |1
is obsolete||

--- Comment #9 from Ben Woodard woodard at redhat dot com ---
Created attachment 30177
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30177action=edit
updated patch that includes __builtin_expect


[Bug target/49146] segv from libgcc_s when raising an exception, or unwinding stack with backtrace with ms_abi

2013-05-23 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49146

--- Comment #10 from Richard Henderson rth at gcc dot gnu.org ---
(In reply to Ben Woodard from comment #9)
 Created attachment 30177 [details]
 updated patch that includes __builtin_expect

The patch in #8 is better, and indeed has a bug fix relative to this
in that the condition should be = DWARF_FRAME_REGISTERS.  Note that
the array size is DWARF_FRAME_REGISTERS + 1.


[Bug c++/57388] [C++11] ICE when function types with ref-qualifiers meet other function types

2013-05-23 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57388

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2013-05-23
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org
 Ever confirmed|0   |1


[Bug c++/57317] [4.8/4.9 Regression] bogus and unsuppressible warning: 'YYY' has a base 'ZZZ' whose type uses the anonymous namespace

2013-05-23 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57317

--- Comment #3 from Paul Pluzhnikov ppluzhnikov at google dot com ---
(In reply to Jason Merrill from comment #2)
 Fixed the false positive for 4.8.1.

Did you mean fixed on trunk ?

On trunk I see

  2013-05-20  Jason Merrill  ja...@redhat.com

PR c++/57317
* decl2.c (determine_visibility): Use PRIMARY_TEMPLATE_P to decide
whether a template has its own args.

but nothing on 4_8-branch.

Can this be back-ported to 4.8?

Thanks,


[Bug c++/57375] gnu multiversioning selects different version depending on link order

2013-05-23 Thread tmsriram at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57375

Sriraman Tallam tmsriram at google dot com changed:

   What|Removed |Added

 CC||davidxl at google dot com

--- Comment #2 from Sriraman Tallam tmsriram at google dot com ---
IMO, This is working as expected.

You define corei7 only in mv12-aux1.cc, so the compilation of mv12.C and
mv12-aux.cc do not see the corei7 version.  The version resolver function that
is generated is a comdat function, and there are 2 copies generated for the 2
source files with a call to foo, mv12.C and mv12-aux1.cc. However, one of the
copies is different, that generated when compiling mv12-aux1.cc because it has
the extra corei7  version.  So, depending on the link order whichever comdat
copy gets kept either calls the corei7 version or not. Usually, the linker
keeps the first comdat copy seen so if you put mv12-aux1.cc ahead of mv12.C,
the corei7 version will be called and the reverse will not call it.

The fix is in the source. Either make every source file see the corei7 version
or hide it from all. 

The linker can be made to complain that the comdats differ if it could be
taught about version resolvers. This may be more involved.


[Bug middle-end/57366] gcc.dg/lto/attr-weakref-1 FAILs

2013-05-23 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57366

--- Comment #10 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE ---
 --- Comment #9 from Jan Hubicka hubicka at ucw dot cz ---
 Hi,
 the following patch sets IDENTIFIER_TRANSPARENT_ALIAS correctly from 
 lto-symtab
 (correct fix should do the same for variable aliases, too).  Now the testcase
 compiles for
 me on Linux with weakref disabled.  Does it work for you?

It does and is a considerable improvement: it fixes

-FAIL: g++.dg/lto/20091219 cp_lto_20091219_0.o-cp_lto_20091219_0.o link, -O3
-fl
to (internal compiler error)
-UNRESOLVED: g++.dg/lto/20091219 cp_lto_20091219_0.o-cp_lto_20091219_0.o
execute
 -O3 -flto

i.e. PR lto/47333 and several of the failures from this PR, but not all
of them:

 UNRESOLVED: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakr
ef-1_2.o execute -O2 -flto -flto-partition=none 
 FAIL: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2
.o link, -O0 -flto -flto-partition=1to1  (internal compiler error)
 UNRESOLVED: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakr
ef-1_2.o execute -O0 -flto -flto-partition=1to1 
-FAIL: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2
.o link, -O2 -flto -flto-partition=1to1 
-UNRESOLVED: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakr
ef-1_2.o execute -O2 -flto -flto-partition=1to1 
-FAIL: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2
.o link, -O0 -flto 
-UNRESOLVED: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakr
ef-1_2.o execute -O0 -flto 
-FAIL: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2
.o link, -O2 -flto
-UNRESOLVED: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakr
ef-1_2.o execute -O2 -flto

i.e. those failures remain:

FAIL: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2.o link, -O0 -flto
-flto-partition=none 
UNRESOLVED: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2.o execute -O0 -flto
-flto-partition=none 
FAIL: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2.o link, -O2 -flto
-flto-partition=none 
UNRESOLVED: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2.o execute -O2 -flto
-flto-partition=none 
FAIL: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2.o link, -O0 -flto
-flto-partition=1to1  (internal compiler error)
UNRESOLVED: gcc.dg/lto/attr-weakref-1
c_lto_attr-weakref-1_0.o-c_lto_attr-weakref-1_2.o execute -O0 -flto
-flto-partition=1to1 

Btw., the patch has a few formatting issues: indentation and line
length.

Thanks.
Rainer


[Bug libstdc++/54354] TODO extended iomanip manipulators std::get_time and std::put_time (C++11, section 27.7.5)

2013-05-23 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54354

--- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com ---
We are trying to break the ABI for 4.9


[Bug c++/57375] gnu multiversioning selects different version depending on link order

2013-05-23 Thread davidxl at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57375

--- Comment #3 from davidxl at google dot com ---
(In reply to Sriraman Tallam from comment #2)
 IMO, This is working as expected.
 
 You define corei7 only in mv12-aux1.cc, so the compilation of mv12.C and
 mv12-aux.cc do not see the corei7 version.  The version resolver function
 that is generated is a comdat function, and there are 2 copies generated for
 the 2 source files with a call to foo, mv12.C and mv12-aux1.cc. However, one
 of the copies is different, that generated when compiling mv12-aux1.cc
 because it has the extra corei7  version.  So, depending on the link order
 whichever comdat copy gets kept either calls the corei7 version or not.
 Usually, the linker keeps the first comdat copy seen so if you put
 mv12-aux1.cc ahead of mv12.C, the corei7 version will be called and the
 reverse will not call it.
 
 The fix is in the source. Either make every source file see the corei7
 version or hide it from all. 
 
 The linker can be made to complain that the comdats differ if it could be
 taught about version resolvers. This may be more involved.


There is no need to conditionally declare/define corei7 version in one file
only -- the additional time cost is very small.

David


[Bug c++/57248] string parameter to constexpr functions

2013-05-23 Thread sutambe at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57248

--- Comment #2 from Sumant Tambe sutambe at yahoo dot com ---
I'm a bit confused. Is the program illformed or supposed to compile but does
not.


[Bug c++/57378] gnu multiversioning gives assembler error: foo.resolver is already defined

2013-05-23 Thread tmsriram at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57378

Sriraman Tallam tmsriram at google dot com changed:

   What|Removed |Added

 CC||davidxl at google dot com

--- Comment #2 from Sriraman Tallam tmsriram at google dot com ---
First, what is happening here is the first call to foo is only seeing 2
versions and the second call to foo is seeing the 3rd corei7 version. Was this
intentional?  

When the dispatcher/resovler decl is created, the cgraph nodes of all versions
are mapped to this decl. However, the new version decl (corei7 version) is
created later, after the first call, and hence it is not mapped to the
dispatcher function decl that was previously generated. Hence the second call
re-generates it.

There are a couple of issues here. Should the first call to foo () even get
access to the corei7 version which is not visible? If the corei7 version should
not be visible to the first call I must create 2 resolvers, one for the first
call and the other for the second call.  This gets complicated and I want to
leave this for future enhancement.

Currently, what is supported is that all calls must see all the versions that
will be created. I can create a patch to generate an appropriate error here  so
that this is made clear.


[Bug c++/57378] gnu multiversioning gives assembler error: foo.resolver is already defined

2013-05-23 Thread davidxl at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57378

--- Comment #3 from davidxl at google dot com ---

Can the resolver node be updated? or a new dispatcher/resolver is created?

The user code looks fine to me, which exposes the implementation limitation.

David

(In reply to Sriraman Tallam from comment #2)
 First, what is happening here is the first call to foo is only seeing 2
 versions and the second call to foo is seeing the 3rd corei7 version. Was
 this intentional?  
 
 When the dispatcher/resovler decl is created, the cgraph nodes of all
 versions are mapped to this decl. However, the new version decl (corei7
 version) is created later, after the first call, and hence it is not mapped
 to the dispatcher function decl that was previously generated. Hence the
 second call re-generates it.
 
 There are a couple of issues here. Should the first call to foo () even get
 access to the corei7 version which is not visible? If the corei7 version
 should not be visible to the first call I must create 2 resolvers, one for
 the first call and the other for the second call.  This gets complicated and
 I want to leave this for future enhancement.
 
 Currently, what is supported is that all calls must see all the versions
 that will be created. I can create a patch to generate an appropriate error
 here  so that this is made clear.


[Bug rtl-optimization/57359] wrong code for union access at -O3 on x86_64-linux

2013-05-23 Thread dhazeghi at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57359

--- Comment #3 from Dara Hazeghi dhazeghi at yahoo dot com ---
My apologies for the invalid report and thank you for the clear explanation. 
I've been using frama-c to check validity of the testcases, but clearly in this
case it's not sufficient.


[Bug debug/57389] New: ICE in dbx_reg_number, at dwarf2out.c:10507 on powerpc-spe target

2013-05-23 Thread rmansfield at qnx dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57389

Bug ID: 57389
   Summary: ICE in dbx_reg_number, at dwarf2out.c:10507 on
powerpc-spe target
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: debug
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rmansfield at qnx dot com
Target: powerpc-e500v2-linux-gnuspe

spe targets are failing to build libgcc.

$ ./xgcc -v
Using built-in specs.
COLLECT_GCC=./xgcc
Target: powerpc-e500v2-linux-gnuspe
Configured with: ../configure --target=powerpc-e500v2-linux-gnuspe
--prefix=/home/ryan/x-tools/powerpc-e500v2-linux-gnuspe
--with-sysroot=/home/ryan/x-tools/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sys-root
--disable-multilib --with-cpu=8548 --with-tune=8548
--with-gmp=/home/ryan/x-tools/powerpc-e500v2-linux-gnuspe
--with-mpfr=/home/ryan/x-tools/powerpc-e500v2-linux-gnuspe
--enable-__cxa_atexit
--with-local-prefix=/home/ryan/x-tools/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sys-root
--disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99
--enable-long-long --enable-target-optspace --enable-e500_double
--with-long-double-128 target_alias=powerpc-e500v2-linux-gnuspe
--enable-languages=c,c++,lto
Thread model: posix
gcc version 4.9.0 20130523 (experimental) [trunk revision 199267] (GCC) 


/home/ryan/gnu/gcc/trunk/spe-build/./gcc/xgcc
-B/home/ryan/gnu/gcc/trunk/spe-build/./gcc/
-B/home/ryan/x-tools/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/bin/
-B/home/ryan/x-tools/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/lib/
-isystem
/home/ryan/x-tools/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/include
-isystem
/home/ryan/x-tools/powerpc-e500v2-linux-gnuspe/powerpc-e500v2-linux-gnuspe/sys-include
   -g -Os -O2  -g -Os -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE  -W -Wall
-Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes
-Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fPIC
-mlong-double-128 -mno-minimal-toc -g -DIN_LIBGCC2 -fbuilding-libgcc
-fno-stack-protector   -fPIC -mlong-double-128 -mno-minimal-toc -I. -I.
-I../.././gcc -I../../../libgcc -I../../../libgcc/. -I../../../libgcc/../gcc
-I../../../libgcc/../include -I../../../libgcc/../libdecnumber/dpd
-I../../../libgcc/../libdecnumber -DHAVE_CC_TLS  -o _powidf2.o -MT _powidf2.o
-MD -MP -MF _powidf2.dep -DL_powidf2 -c ../../../libgcc/libgcc2.c
-fvisibility=hidden -DHIDE_EXPORTS
../../../libgcc/libgcc2.c: In function '__powidf2':
../../../libgcc/libgcc2.c:1777:1: internal compiler error: in dbx_reg_number,
at dwarf2out.c:10507
 }
 ^
0x64377e dbx_reg_number
../../gcc/dwarf2out.c:10507
0x64377e dbx_reg_number
../../gcc/dwarf2out.c:10503
0x66b447 multiple_reg_loc_descriptor
../../gcc/dwarf2out.c:10664
0x66b447 reg_loc_descriptor
../../gcc/dwarf2out.c:10578
0x66eb43 loc_descriptor
../../gcc/dwarf2out.c:12951
0x66ee46 loc_descriptor
../../gcc/dwarf2out.c:12983
0x66f3b5 dw_loc_list_1
../../gcc/dwarf2out.c:13256
0x66b86b dw_loc_list
../../gcc/dwarf2out.c:13512
0x66b86b loc_list_from_tree
../../gcc/dwarf2out.c:13897
0x670de9 add_location_or_const_value_attribute
../../gcc/dwarf2out.c:15391
0x670de9 add_location_or_const_value_attribute
../../gcc/dwarf2out.c:15333
0x671261 gen_formal_parameter_die
../../gcc/dwarf2out.c:17190
0x65f694 gen_decl_die
../../gcc/dwarf2out.c:20191
0x65cb9b gen_subprogram_die
../../gcc/dwarf2out.c:18063
0x65f634 gen_decl_die
../../gcc/dwarf2out.c:20102
0x660688 dwarf2out_function_decl
../../gcc/dwarf2out.c:20492
0x6c1dc4 rest_of_handle_final
../../gcc/final.c:4393
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.


[Bug c++/57388] [C++11] ICE when function types with ref-qualifiers meet other function types

2013-05-23 Thread daniel.kruegler at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57388

--- Comment #2 from Daniel Krügler daniel.kruegler at googlemail dot com ---
(In reply to Daniel Krügler from comment #0)
 While attempting to upgrade std::function for functions with ref-qualifiers 
 [..]

Oops, I meant std::is_function of-course.

[Bug libstdc++/54354] TODO extended iomanip manipulators std::get_time and std::put_time (C++11, section 27.7.5)

2013-05-23 Thread dmorilha at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54354

--- Comment #5 from Daniel Morilha dmorilha at gmail dot com ---
I just realized I can use operating system functionality to achieve the same
goal. Please ignore my question and thanks for the quick follow up. Looking
forward to gcc 4.9.0


[Bug c++/57319] [4.8 Regression]: bogus defaulted move assignment for ... calls a non-trivial move assignment operator for virtual base ...

2013-05-23 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57319

--- Comment #4 from Jason Merrill jason at gcc dot gnu.org ---
(In reply to Paul Pluzhnikov from comment #3)
 Can this be back-ported to 4.8 branch?

After 4.8.1, I think.


[Bug c++/57248] string parameter to constexpr functions

2013-05-23 Thread daniel.kruegler at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57248

--- Comment #3 from Daniel Krügler daniel.kruegler at googlemail dot com ---
The code looks valid to me. I think that Paolo just wanted to point out that
the library implementation does not cause this. I agree with him and can
confirm that the code is also rejected when emulating the library such as in
the following way:

templatebool, class
struct enable_if{};

templateclass T
struct enable_iftrue, T{ typedef T type; };

templateclass T1, class T2
struct tuple
{
  T1 t1;
  T2 t2;
};

templateunsigned I, class T1, class T2
constexpr
typename enable_ifI == 0, T1::type
get(tupleT1, T2 t) { return t.t1; }

templateunsigned I, class T1, class T2
constexpr
typename enable_ifI == 1, T1::type
get(tupleT1, T2 t) { return t.t2; }

templateclass T1, class T2
constexpr tupleT1, T2 make_tuple(T1 t1, T2 t2)
{
  return tupleT1, T2{t1, t2};
}

Same error here.

[Bug rtl-optimization/57359] wrong code for union access at -O3 on x86_64-linux

2013-05-23 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57359

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org ---
NP, and thanks a lot for the bugreports, they are very much appreciated.


[Bug c++/57319] [4.8 Regression]: bogus defaulted move assignment for ... calls a non-trivial move assignment operator for virtual base ...

2013-05-23 Thread richard-gccbugzilla at metafoo dot co.uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57319

Richard Smith richard-gccbugzilla at metafoo dot co.uk changed:

   What|Removed |Added

 CC||richard-gccbugzilla@metafoo
   ||.co.uk

--- Comment #5 from Richard Smith richard-gccbugzilla at metafoo dot co.uk ---
(In reply to Jason Merrill from comment #1)
 (In reply to Paul Pluzhnikov from comment #0)
However, this particular case *isn't* the problematic case, because
(a) this sample code should not trigger the definition of C's move
assignment operator, and
 
 True, the warning is given at declaration time; it would be possible to move
 the warning to when the move assignment is used, but that might mean design
 errors don't get caught until later.

OK, that makes sense. However, delaying the check until the operator= is lazily
declared does not fully achieve this goal. Could the check be performed at the
end of the definition of class C (rather than, presumably, when looking for a
virtual C::operator= for D::operator= to override)?

(b) there is only one inheritance path from C to B, so it won't be
move-assigned multiple times, and
 
 True, the warning is given at the point of first virtual derivation rather
 than when it appears in a diamond-shaped hierarchy.  But the purpose of
 virtual derivation is to support diamond-shaped hierarchies, so again it
 seems appropriate to warn sooner rather than later.

OK. The class which brings together the diamond may provide a move assignment
operator which does not blindly call the move assignment operators on the base
classes, so this can still have some false positives even if every virtual base
is involved in diamond inheritance.


[Bug c++/57317] [4.8/4.9 Regression] bogus and unsuppressible warning: 'YYY' has a base 'ZZZ' whose type uses the anonymous namespace

2013-05-23 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57317

--- Comment #4 from Jason Merrill jason at gcc dot gnu.org ---
(In reply to Paul Pluzhnikov from comment #3)
 but nothing on 4_8-branch.

Look again; it's commit 199104 on gcc-4_8-branch.


[Bug c++/57317] [4.8/4.9 Regression] bogus and unsuppressible warning: 'YYY' has a base 'ZZZ' whose type uses the anonymous namespace

2013-05-23 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57317

--- Comment #5 from Paul Pluzhnikov ppluzhnikov at google dot com ---
(In reply to Jason Merrill from comment #4)

 Look again; it's commit 199104 on gcc-4_8-branch.

I can see it now. Thanks for the fix!


[Bug c++/57384] can't expand a parameter pack into a list of function types or function pointer types

2013-05-23 Thread eric.niebler at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57384

--- Comment #3 from Eric Niebler eric.niebler at gmail dot com ---
Interesting. I filed a similar bug against clang
(http://llvm.org/bugs/show_bug.cgi?id=16118), where Richard Smith seems to feel
the test cases should be:

  templatetypename ...Ts
  struct list
  {};

  templatetypename ...Ts
  struct S
  {
  using type1 = void(int...(Ts));// (1) fails
  using type2 = listint(Ts)...;// (2) works
  using type3 = void(int(*...)(Ts)); // (3) fails
  using type4 = listint(*)(Ts)...; // (4) works
  };

This strikes me as ludicrously inconsistent. I think we need guidance from the
committee here. I was basing my bug report(s) on the example in 8.3.5/13 (which
shows:

   templatetypename... T void f(T (* ...t)(int, int));

The suggestion that the pack expansion syntax differs depending on the context
in which the expansion occurs is, um, unsatisfactory.


[Bug middle-end/57286] [4.9 regression] infinite recursion in fold-const.c:10037

2013-05-23 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57286

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #8 from Marc Glisse glisse at gcc dot gnu.org ---
.


[Bug middle-end/56934] ICE folding a COND_EXPR involving vectors

2013-05-23 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56934

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.9.0
  Known to fail|4.9.0   |

--- Comment #2 from Marc Glisse glisse at gcc dot gnu.org ---
Fixed on trunk.


[Bug c++/57248] string parameter to constexpr functions

2013-05-23 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57248

--- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com ---
Thanks Daniel. In fact - I should have attached some code - nothing about
tuple  co matters, you can remove it completely and replace std::get with,
say,

template int N
constexpr int get() { return 1; }


[Bug c++/37140] type inherited from base class not recognized

2013-05-23 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37140

--- Comment #6 from Paolo Carlini paolo.carlini at oracle dot com ---
Thanks a lot!


[Bug c++/57390] New: Fixed point types on AVR are not available in C++ mode

2013-05-23 Thread ambrop7 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57390

Bug ID: 57390
   Summary: Fixed point types on AVR are not available in C++ mode
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ambrop7 at gmail dot com

As of version 4.8, GCC supports fixed point types for the AVR target. See:
http://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support

However, this is only available in C and not in C++. Please enable fixed point
for C++ too. It may have to be hidden behind an option to not break existing
C++ code though.


[Bug c++/57390] Fixed point types on AVR are not available in C++ mode

2013-05-23 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57390

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
There is no way to enable it for C++ because the extension has not been
designed to how it would interact with templates and such.

See the thread at http://gcc.gnu.org/ml/gcc/2011-11/msg00124.html for more
info.


[Bug c++/57390] Fixed point types on AVR are not available in C++ mode

2013-05-23 Thread ambrop7 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57390

--- Comment #2 from Ambroz Bizjak ambrop7 at gmail dot com ---
I've been reading the discussion there, but I don't see any interaction
problems with templates. Most of it is just useless arguing about whether fixed
point types can be implemented externally with templates. The support in the
GCC code is already there, what is the real obstacle to enabling that in C++?