[Bug objc++/48275] getter=namespace failing with .mm

2011-10-15 Thread nicola at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48275

--- Comment #4 from Nicola Pero  2011-10-15 08:04:39 
UTC ---
Author: nicola
Date: Sat Oct 15 08:04:33 2011
New Revision: 180023

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180023
Log:
In gcc/cp/:
2011-10-15  Nicola Pero  

Backport from mainline
2011-06-06  Nicola Pero  ,

PR obj-c++/48275
* parser.c (cp_parser_objc_at_property_declaration): Allow setter
and getter names to use all the allowed method names.

In gcc/testsuite/:
2011-10-15  Nicola Pero  

Backport from mainline
2011-06-06  Nicola Pero  

PR objc-++/48275
* obj-c++.dg/property/cxx-property-1.mm: New.
* obj-c++.dg/property/cxx-property-2.mm: New.

Added:
branches/gcc-4_6-branch/gcc/testsuite/obj-c++.dg/property/cxx-property-1.mm
branches/gcc-4_6-branch/gcc/testsuite/obj-c++.dg/property/cxx-property-2.mm
Modified:
branches/gcc-4_6-branch/gcc/cp/ChangeLog
branches/gcc-4_6-branch/gcc/cp/parser.c
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog


[Bug objc++/48275] getter=namespace failing with .mm

2011-10-15 Thread nicola at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48275

Nicola Pero  changed:

   What|Removed |Added

   Target Milestone|--- |4.6.2


[Bug tree-optimization/50735] [4.7 Regression] gcc.dg/torture/vector-2.c:52:1: ICE: verify_ssa failed at -O1 and above

2011-10-15 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50735

Richard Guenther  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-10-15
 CC||jakub at gcc dot gnu.org
   Target Milestone|--- |4.7.0
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther  2011-10-15 
08:44:51 UTC ---
Maybe caused by the addressable changes.  Clearly the IL is invalid because
we have a partial def of an SSA name.


[Bug middle-end/50640] [4.7 Regression] FAIL: gfortran.dg/select_type_12.f03 -O (internal compiler error)

2011-10-15 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50640

Hans-Peter Nilsson  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-10-15
 Ever Confirmed|0   |1

--- Comment #8 from Hans-Peter Nilsson  2011-10-15 
08:47:07 UTC ---
Still there, so I'll confirm it; cris-elf at r180014 too, introduced
r179598:179611.


[Bug rtl-optimization/38644] [4.4/4.5/4.6/4.7 Regression] Optimization flag -O1 -fschedule-insns2 causes wrong code

2011-10-15 Thread sebastian.hu...@embedded-brains.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38644

--- Comment #52 from Sebastian Huber  
2011-10-15 08:48:10 UTC ---
In GCC 4.6.2 20111014 (prerelease) the problem is still not fixed and 
"arm-eabi-gcc -march=armv5t -mthumb -O2" produces wrong code.  Please don't let
it slip through the next release.


[Bug middle-end/50724] isnan broken by -ffinite-math-only in g++

2011-10-15 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50724

Richard Guenther  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution||INVALID

--- Comment #12 from Richard Guenther  2011-10-15 
08:50:56 UTC ---
(In reply to comment #11)
> Marc: is this code perusable? I'm curious because I expect either the
> calculations may generate NaN or not at all.  If they might and you even have
> test cases to handle it, then I'm surprised you would ever want to support
> running with -ff-m-o.  Conversely if you knew the code doesn't generate the
> nonfinite values, then you don't need the classifications in the first
> place...?
> 
> I'm guessing (and apologies if this is inaccurate) that this might boil down 
> to
> saying that you want to interpret an end user setting -ff-m-o as an 
> opportunity
> to skip validating their input or skip doing assertions during its processing,
> which could be a reasonable thing to do, but that's a choice I'd rather leave
> to individual developers, e.g. can also wrap code with #if
> __FINITE_MATH_ONLY__==0 or such...
> 
> Or in other words, it's only a missed optimization if you wind up with
> classification calls, whereas it's a full-fledged execution error when NaN 
> gets
> past validation.

You can switch between explicit checking and trapping for example, by
switching between -ffinite-math-only and -fno-trapping-math.

Note that in general it is impossible to decide whether an argument of
isnan() is from user input or previous computation.  Which means that
making isnan() special for -ffinite-math-only makes as much sense as
special-casing any math library function (that may also take user input).

This has been discussed to death already, and the present behavior is how
GCC behaved since ever.  It's not a bug.  The documentation states

"Allow optimizations for floating-point arithmetic that assume
that arguments and results are not NaNs or +-Infs."

it is clear that isnan(x) may then be optimized assuming that x is
not NaN.


[Bug c++/50734] const and pure attributes don't have the effect as in C

2011-10-15 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50734

Richard Guenther  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WORKSFORME

--- Comment #1 from Richard Guenther  2011-10-15 
08:54:32 UTC ---
This is because f can throw, you need to mark it nothrow as well in C++.
Whether something throws or accesses global memory is orthogonal.
Works with -fno-exceptions.


[Bug rtl-optimization/50728] Inefficient vector loads from aggregates passed by value

2011-10-15 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50728

--- Comment #4 from Richard Guenther  2011-10-15 
08:57:27 UTC ---
(In reply to comment #3)
> The problem is that the ABI was designed with the scalar operations
> in mind, rather than possible vectorization.  If you consider an
> alternate function
> 
> A foo(A a, A b)
> {
>   a.a[0] += b.a[0];
>   a.a[1] -= b.a[1];
>   a.a[2] *= b.a[2];
>   a.a[3] /= b.a[3];
>   return a;
> }
> 
> then the way the ABI passes the floats *is* optimal.  I.e. already
> unpacked in the registers, ready for use in their scalar operations.

Actually they are passed in pairs, not exactly ready for computation
(they are for doubles, but not for floats due to the 8-byte packing).

> What you're asking for is a special private ABI for "sum", with the
> knowledge that the inputs are used, packed in their vectors.

Actually I ask for the compiler to optimize the stack store/load
sequence into register moves using movhps ...

> Given that you can achieve the parameter register assignment that
> you want via passing the proper vector type, this seems to be a 
> simple matter of function cloning/versioning:
> 
>   V4SF sum.vector(V4SF a, V4SF b)
>   {
> return a + b;
>   }
> 
>   user_of_sum()
>   {
> ...
> V4SF r.v = sum.vector(VIEW_CONVERT, VIEW_CONVERT);
> A r = VIEW_CONVERT;
> ...
>   }
> 
> Of course, I've no idea how you're going to decide when to produce
> this particular clone.  That seems like a fairly hard decision to make,
> given the relative placements of the vectorization passes and the
> IPA passes.

Yeah, that's going to be difficult.


[Bug middle-end/50731] [4.7 Regression] FAIL: gcc.dg/torture/vector-shift2.c

2011-10-15 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50731

Richard Guenther  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-10-15
   Target Milestone|--- |4.7.0
 Ever Confirmed|0   |1

--- Comment #2 from Richard Guenther  2011-10-15 
08:58:20 UTC ---
Confirmed.


[Bug middle-end/50724] isnan broken by -ffinite-math-only in g++

2011-10-15 Thread marc.glisse at normalesup dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50724

--- Comment #13 from Marc Glisse  2011-10-15 
09:05:57 UTC ---
(In reply to comment #11)
> I'm guessing (and apologies if this is inaccurate) that this might boil down 
> to
> saying that you want to interpret an end user setting -ff-m-o as an 
> opportunity
> to skip validating their input or skip doing assertions during its processing,

Yes, exactly.

> which could be a reasonable thing to do, but that's a choice I'd rather leave
> to individual developers, e.g. can also wrap code with #if
> __FINITE_MATH_ONLY__==0 or such...

Not very portable afaik.

> Or in other words, it's only a missed optimization if you wind up with
> classification calls,

-ffinite-math-only exists for the sole purpose of allowing extra optimizations
at the expanse of correctness if the contract is broken.

> whereas it's a full-fledged execution error when NaN gets
> past validation.

A full-fledged user error to have used this flag ;-)

Actually, I can understand why you'ld want to be able to write
assert(!isnan(x)) and get a useful result. If on the other hand you want
if(isnan(x))f();else g(); then g should be in a separate translation unit that
can use -ffinite-math-only (and using LTO may require a lot of prayers in that
case) or it could use the optimize attribute/pragma. This could work for the
assertion as well: have a validate_input function compiled without the flag.

I am not sure if it is possible to have it both ways: be able to validate the
input and still be able to optimize headers.


[Bug middle-end/50640] [4.7 Regression] FAIL: gfortran.dg/select_type_12.f03 -O (internal compiler error)

2011-10-15 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50640

--- Comment #9 from janus at gcc dot gnu.org 2011-10-15 09:13:02 UTC ---
(In reply to comment #5)
> (In reply to comment #4)
> > Or another solution: should the fortran frontend perhaps put all these
> > variables not in MAINs scope (where they aren't referenced anyway), but
> > rather into file scope?  That last solution would probably be the sanest.
> 
> Looks sensible. Janus & Paul, What do you think?

Yes, I think that would be ok. The 'vtab' symbols are really meant to be
global.

(Sorry for the late answer. I almost forgot about this one.)


[Bug c++/50736] New: ISO_IEC_14882-2011-5.1.2/10 - bug

2011-10-15 Thread i.nixman at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50736

 Bug #: 50736
   Summary: ISO_IEC_14882-2011-5.1.2/10 - bug
Classification: Unclassified
   Product: gcc
   Version: 4.6.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: i.nix...@gmail.com


Quote from ISO_IEC_14882-2011, 5.1.2/10:
> The identifiers in a capture-list are looked up using 
> the usual rules for unqualified name lookup (3.4.1); each
> such lookup shall find a variable with automatic 
> storage duration declared in the reaching scope of the local
> lambda expression. An entity (i.e. a variable or this) is 
> said to be explicitly captured if it appears in the
> lambda-expression’s capture-list.

But this code successfuly compiled on gcc-4.6.1:
#include 
int main() {
  using std::cout;
  auto f = [&cout]() { cout << 1; }; // <<
  f();
}

http://liveworkspace.org/code/ae698b7daf7b5b531beafd9faaa6a409


Intel C++ 12.1 says: error : a variable with static storage
duration cannot be captured in a lambda


niXman.


[Bug target/50737] New: FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?

2011-10-15 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

 Bug #: 50737
   Summary: FAIL: Throw_3 -O3 execution, generic dwarf2 EH
problem?
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: ubiz...@gmail.com
Target: dwarf2 EH targets (alphaev68-pc-linux-gnu)


This problem shows on alphaev68-pc-linux-gnu as "FAIL: Throw_3 -O3 execution -
source compiled test" in [1], but I believe that it points to generic problem
in dwarf2 EH handling. It was uncovered by changing alpha target to use .cfi
directives.

After java test throws an exception (through libjava/exception.cc), it calls
_Unwind_RaiseException from _Jv_Throw. However, one of the functions in unwind
chain, just before target function is defined as:

$_ZN7Throw_33fooEJiP6JArrayIiE..ng:
_ZN7Throw_33fooEJiP6JArrayIiE:
.eflag 48
.frame $30,0,$26,0
$LFB3:
.loc 1 38 0
.cfi_startproc
.prologue 0
$LVL2:
$LBB3:
.loc 1 38 0
ldl $0,8($17)
$LVL3:
.loc 1 39 0
addl $0,$0,$0
$LVL4:
addl $31,$0,$0
$LBE3:
ret $31,($26),1
.cfi_endproc
$LFE3:

This results in "empty" FDE:

0030 0010 0034 FDE cie= pc=0030..0040
  DW_CFA_nop
  DW_CFA_nop
  DW_CFA_nop

The target function:

_ZN7Throw_34mainEJvP6JArrayIPN4java4lang6StringEE:
.eflag 48
.frame $30,48,$26,0
.mask 0x4001e00,-48
$LFB1:
.loc 1 7 0
.cfi_startproc
.cfi_personality 0x9b,DW.ref.__gcj_personality_v0
.cfi_lsda 0x1b,$LLSDA1
$LEHB0:
ldah $29,0($27) !gpdisp!8
lda $29,0($29)  !gpdisp!8
$_ZN7Throw_34mainEJvP6JArrayIPN4java4lang6StringEE..ng:
lda $30,-48($30)
$LCFI4:
.cfi_def_cfa_offset 48

defines correct .cfi_personality.

Tracing the unwinder through libbgcc/unwin.inc, _Unwind_RaiseException shows:

(gdb) p cur_context
$29 = {reg = {0x11ff10e60, 0x11ff10e68, 0x11ff10e70, 0x11ff10e78, 0x11ff10e80, 
0x11ff10e88, 0x11ff10e90, 0x11ff10e98, 0x11ff10ea0, 0x11ff10ea8, 
0x11ff10eb0, 0x11ff10eb8, 0x11ff10ec0, 0x11ff10ec8, 0x11ff10ed0, 
0x11ff10ed8, 0x11ff10ee0, 0x11ff10ee8, 0x11ff10ef0, 0x11ff10ef8, 
0x11ff10f00, 0x11ff10f08, 0x11ff10f10, 0x11ff10f18, 0x11ff10f20, 
0x11ff10f28, 0x11ff10f30, 0x11ff10f38, 0x11ff10f40, 0x11ff10f48, 0x0, 0x0, 
0x11ff10f68, 0x11ff10f70, 0x11ff10f78, 0x11ff10f80, 0x11ff10f88, 
0x11ff10f90, 0x11ff10f98, 0x11ff10fa0, 0x11ff10fa8, 0x11ff10fb0, 
0x11ff10fb8, 0x11ff10fc0, 0x11ff10fc8, 0x11ff10fd0, 0x11ff10fd8, 
0x11ff10fe0, 0x11ff10fe8, 0x11ff10ff0, 0x11ff10ff8, 0x11ff11000, 
0x11ff11008, 0x11ff11010, 0x11ff11018, 0x11ff11020, 0x11ff11028, 
0x11ff11030, 0x11ff11038, 0x11ff11040, 0x11ff11048, 0x11ff11050, 
0x11ff11058, 0x0, 0x11ff10e50}, cfa = 0x11ff110e0, ra = 0x129d4, 
  lsda = 0x0, bases = {tbase = 0x0, dbase = 0x0, func = 0x2000189fc90}, 
  flags = 4611686018427387904, version = 0, args_size = 0, 
  by_value = '\000' }

(gdb) p cur_context
$30 = {reg = {0x11ff10e60, 0x11ff10e68, 0x11ff10e70, 0x11ff10e78, 0x11ff10e80, 
0x11ff10e88, 0x11ff10e90, 0x11ff10e98, 0x11ff10ea0, 0x11ff10ea8, 
0x11ff10eb0, 0x11ff10eb8, 0x11ff10ec0, 0x11ff10ec8, 0x11ff10ed0, 
0x11ff10ed8, 0x11ff10ee0, 0x11ff10ee8, 0x11ff10ef0, 0x11ff10ef8, 
0x11ff10f00, 0x11ff10f08, 0x11ff10f10, 0x11ff10f18, 0x11ff10f20, 
0x11ff10f28, 0x11ff10f30, 0x11ff10f38, 0x11ff10f40, 0x11ff10f48, 0x0, 0x0, 
0x11ff10f68, 0x11ff10f70, 0x11ff10f78, 0x11ff10f80, 0x11ff10f88, 
0x11ff10f90, 0x11ff10f98, 0x11ff10fa0, 0x11ff10fa8, 0x11ff10fb0, 
0x11ff10fb8, 0x11ff10fc0, 0x11ff10fc8, 0x11ff10fd0, 0x11ff10fd8, 
0x11ff10fe0, 0x11ff10fe8, 0x11ff10ff0, 0x11ff10ff8, 0x11ff11000, 
0x11ff11008, 0x11ff11010, 0x11ff11018, 0x11ff11020, 0x11ff11028, 
0x11ff11030, 0x11ff11038, 0x11ff11040, 0x11ff11048, 0x11ff11050, 
0x11ff11058, 0x0, 0x11ff10e50}, cfa = 0x11ff110e0, ra = 0x12af4, 
  lsda = 0x0, bases = {tbase = 0x0, dbase = 0x0, func = 0x129d0}, 
  flags = 4611686018427387904, version = 0, args_size = 0, 
  by_value = '\000' }

where cfa of the former context shows "cfa = 0x11ff110e0" that is equal to cfa
from the later context. The return address (ra) from the former points to:

000129d0 <_ZN7Throw_33fooEJiP6JArrayIiE>:
   129d0:08 00 11 a0 ldlv0,8(a1)
   129d4:00 00 00 40 addlv0,v0,v0
   129d8:00 00 e0 43 sextlv0,v0
   129dc:01 80 fa 6b ret

and the return address of the later context points to:

00012a64 <_ZN7Throw_34mainEJvP6JArrayIPN4java4lang6StringEE>:
   12a64:02 00 bb 27 ldahgp,2(t12)
   12a68:2c 8d bd 23 ldagp,-29396(gp)
   12a6c:d0 ff de 23 ldasp,-48(sp)
   ...
   12af0

[Bug target/50737] FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?

2011-10-15 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

--- Comment #1 from Uros Bizjak  2011-10-15 10:11:44 
UTC ---
Created attachment 25506
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25506
Assembly dump of Throw_3.java


[Bug target/50737] FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?

2011-10-15 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

--- Comment #2 from Uros Bizjak  2011-10-15 10:13:04 
UTC ---
Created attachment 25507
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25507
Object dump of text section of Throw_3.java


[Bug target/50737] FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?

2011-10-15 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

--- Comment #3 from Uros Bizjak  2011-10-15 10:18:48 
UTC ---
Created attachment 25508
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25508
Dwarf2 frames of Throw_3.java


[Bug rtl-optimization/49941] [4.7 Regression] segmentation fault in redirect_jump_2

2011-10-15 Thread amodra at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49941

--- Comment #10 from Alan Modra  2011-10-15 10:32:36 
UTC ---
Author: amodra
Date: Sat Oct 15 10:32:33 2011
New Revision: 180027

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180027
Log:
PR rtl-optimization/49941
* jump.c (mark_jump_label_1): Set JUMP_LABEL for simple_return jumps.

* rtl.h (set_return_jump_label): Declare.
* function.c (set_return_jump_label): New function, extracted..
(thread_prologue_and_epilogue_insns): ..from here.  Use it in
another instance to set return jump_label.
* cfgrtl.c (force_nonfallthru_and_redirect): Use set_return_jump_label.
* reorg.c (find_end_label): Likewise.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/cfgrtl.c
trunk/gcc/function.c
trunk/gcc/jump.c
trunk/gcc/reorg.c
trunk/gcc/rtl.h


[Bug tree-optimization/50735] [4.7 Regression] gcc.dg/torture/vector-2.c:52:1: ICE: verify_ssa failed at -O1 and above

2011-10-15 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50735

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #2 from Jakub Jelinek  2011-10-15 
10:48:12 UTC ---
Created attachment 25509
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25509
gcc47-pr50735.patch

Untested fix.  Alternatively we could do:
  /* If PARM was addressable, move that flag over
 to the local copy, as its address will be taken,
 not the PARMs.  Keep the parms address taken
 as we'll query that flag during gimplification.  */
  if (TREE_ADDRESSABLE (parm))
{
  local = create_tmp_var (type, get_name (parm));
  TREE_ADDRESSABLE (local) = 1;
}
  else
local = create_tmp_reg (type, get_name (parm));
  DECL_IGNORED_P (local) = 0;


[Bug target/50737] FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?

2011-10-15 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

Eric Botcazou  changed:

   What|Removed |Added

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

--- Comment #4 from Eric Botcazou  2011-10-15 
10:57:57 UTC ---
> IMO, this points to a bug in generic dwarf2 exception handling, in how context
> is identified. For illustration, I will attach asm dump, object dump and
> corresponding .eh_frame --dwarf dump of Throw_3.java.

This is an old debate.  This was changed by Geoff in 2007:
  http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01252.html

The problematic function is leaf though; how come it appears in the unwind
chain?
Does it raise a signal?  If so, there may be a missing _Unwind_IsSignalFrame
bit.


[Bug target/50737] FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?

2011-10-15 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

--- Comment #5 from Uros Bizjak  2011-10-15 11:11:51 
UTC ---
(In reply to comment #4)
> > IMO, this points to a bug in generic dwarf2 exception handling, in how 
> > context
> > is identified. For illustration, I will attach asm dump, object dump and
> > corresponding .eh_frame --dwarf dump of Throw_3.java.
> 
> This is an old debate.  This was changed by Geoff in 2007:
>   http://gcc.gnu.org/ml/gcc-patches/2007-05/msg01252.html
> 
> The problematic function is leaf though; how come it appears in the unwind
> chain?
> Does it raise a signal?  If so, there may be a missing _Unwind_IsSignalFrame
> bit.

I hope that RTH can provide this answer, this is a bit uncharted territory to
me.


[Bug target/50737] FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?

2011-10-15 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

--- Comment #6 from Uros Bizjak  2011-10-15 11:23:54 
UTC ---
(In reply to comment #5)

> I hope that RTH can provide this answer, this is a bit uncharted territory to
> me.

... but looking at Dwarf2 frames dump, there is no "S" in any of the CIE
augmentation data.


[Bug bootstrap/50738] New: [4.7 Regression] Bootstrap failure at revision 180028 on powerpc-apple-darwin9

2011-10-15 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50738

 Bug #: 50738
   Summary: [4.7 Regression] Bootstrap failure at revision 180028
on powerpc-apple-darwin9
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: domi...@lps.ens.fr
CC: amo...@gmail.com, ia...@gcc.gnu.org
  Host: powerpc-apple-darwin9
Target: powerpc-apple-darwin9
 Build: powerpc-apple-darwin9


On powerpc-apple-darwin9 at revision 180029, bootstrap fails with:

gcc -c   -O0 -g -fexceptions -mmacosx-version-min=10.4 -DIN_GCC   -W -Wall
-Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
-Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros
-Wno-overlength-strings -Wold-style-definition -Wc++-compat -fno-common 
-DHAVE_CONFIG_H -I. -I. -I../../work/gcc -I../../work/gcc/.
-I../../work/gcc/../include -I../../work/gcc/../libcpp/include -I/sw/include 
-I../../work/gcc/../libdecnumber -I../../work/gcc/../libdecnumber/dpd
-I../libdecnumber  -I/sw/include -DCLOOG_INT_GMP -DCLOOG_ORG 
../../work/gcc/ifcvt.c -o ifcvt.o
../../work/gcc/ifcvt.c: In function 'dead_or_predicable':
../../work/gcc/ifcvt.c:4176: error: 'HAVE_simple_return' undeclared (first use
in this function)
../../work/gcc/ifcvt.c:4176: error: (Each undeclared identifier is reported
only once
../../work/gcc/ifcvt.c:4176: error: for each function it appears in.)

This has been introduced by revision 180028

Author:amodra
Date:Sat Oct 15 10:36:00 2011 UTC (65 minutes, 35 seconds ago)
Changed paths:2
Log Message:
* ifcvt.c (dead_or_predicable): Disable if-conversion when
doing so is likely to kill a shrink-wrapping opportunity.

I am now testing the new block protected by '#ifdef HAVE_simple_return' as done
elsewhere.


[Bug fortran/50659] [4.4/4.5/4.6/4.7 Regression] [F03] ICE with PROCEDURE statement

2011-10-15 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50659

--- Comment #15 from janus at gcc dot gnu.org 2011-10-15 12:16:22 UTC ---
Author: janus
Date: Sat Oct 15 12:16:13 2011
New Revision: 180032

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180032
Log:
2011-10-15  Janus Weil  

PR fortran/50659
* expr.c (replace_symbol): Only do replacement if the symbol is a dummy.

2011-10-15  Janus Weil  

PR fortran/50659
* gfortran.dg/proc_decl_27.f90: New.

Added:
branches/gcc-4_4-branch/gcc/testsuite/gfortran.dg/proc_decl_27.f90
Modified:
branches/gcc-4_4-branch/gcc/fortran/ChangeLog
branches/gcc-4_4-branch/gcc/fortran/expr.c
branches/gcc-4_4-branch/gcc/testsuite/ChangeLog


[Bug fortran/50659] [4.4/4.5/4.6/4.7 Regression] [F03] ICE with PROCEDURE statement

2011-10-15 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50659

janus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #16 from janus at gcc dot gnu.org 2011-10-15 12:18:17 UTC ---
The fix has landed on all branches from 4.4 on upwards, so we can finally close
this one.


[Bug libstdc++/49894] [C++0x] Uniform initialization in constructor

2011-10-15 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49894

--- Comment #7 from Jonathan Wakely  2011-10-15 
12:25:41 UTC ---
Yeah, this pr inspired http://gcc.gnu.org/ml/libstdc++/2011-10/msg00016.html


[Bug rtl-optimization/50496] [4.7 regression] ICE in redirect_jump, at jump.c:1497

2011-10-15 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50496

Eric Botcazou  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-10-15
 CC||ebotcazou at gcc dot
   ||gnu.org
  Component|middle-end  |rtl-optimization
 Ever Confirmed|0   |1

--- Comment #6 from Eric Botcazou  2011-10-15 
12:51:30 UTC ---
I can reproduce.


[Bug libstdc++/49894] [C++0x] Uniform initialization in constructor

2011-10-15 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49894

Jonathan Wakely  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 AssignedTo|unassigned at gcc dot   |redi at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.7.0

--- Comment #8 from Jonathan Wakely  2011-10-15 
12:53:47 UTC ---
I'll deal with this after PR 50196


[Bug libstdc++/50196] [C++0x] std::thread not available under macos

2011-10-15 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50196

Jonathan Wakely  changed:

   What|Removed |Added

   Target Milestone|--- |4.7.0


[Bug rtl-optimization/50496] [4.7 regression] ICE in redirect_jump, at jump.c:1497

2011-10-15 Thread markus at trippelsdorf dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50496

Markus Trippelsdorf  changed:

   What|Removed |Added

 CC||cltang at gcc dot gnu.org

--- Comment #7 from Markus Trippelsdorf  
2011-10-15 12:58:01 UTC ---
Chung-Lin told me in a private mail, that he'll handle this when
he finds time.


[Bug target/49910] "internal compiler error: in redirect_jump, at jump.c:1485" when build ppl-0.11.2

2011-10-15 Thread i.nixman at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49910

niXman  changed:

   What|Removed |Added

   Severity|normal  |critical


[Bug fortran/50570] [4.6/4.7 Regression] Incorrect error for assignment to intent(in) pointer

2011-10-15 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50570

--- Comment #14 from janus at gcc dot gnu.org 2011-10-15 13:30:13 UTC ---
Author: janus
Date: Sat Oct 15 13:30:07 2011
New Revision: 180037

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180037
Log:
2011-10-15  Janus Weil  

PR fortran/50570
* expr.c (gfc_check_vardef_context): Don't throw an error on
non-pointer assignments involving an intent(in) pointer dummy.


2011-10-15  Janus Weil  

PR fortran/50570
* gfortran.dg/pointer_intent_5.f90: New.

Added:
branches/gcc-4_6-branch/gcc/testsuite/gfortran.dg/pointer_intent_5.f90
Modified:
branches/gcc-4_6-branch/gcc/fortran/ChangeLog
branches/gcc-4_6-branch/gcc/fortran/expr.c
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog


[Bug fortran/50570] [4.6/4.7 Regression] Incorrect error for assignment to intent(in) pointer

2011-10-15 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50570

janus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #15 from janus at gcc dot gnu.org 2011-10-15 13:31:51 UTC ---
Fixed on 4.6 and trunk. Closing.

Thanks for the report!


[Bug bootstrap/50738] [4.7 Regression] Bootstrap failure at revision 180028 on powerpc-apple-darwin9

2011-10-15 Thread amodra at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50738

--- Comment #1 from Alan Modra  2011-10-15 13:40:02 
UTC ---
Author: amodra
Date: Sat Oct 15 13:39:58 2011
New Revision: 180038

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180038
Log:
PR bootstrap/50738
* ifcvt.c (dead_or_predicable): Revert accidental commit with
HAVE_simple_return test.


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


[Bug tree-optimization/50698] pretending to create versioning for alias when not required

2011-10-15 Thread vincenzo.innocente at cern dot ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50698

--- Comment #6 from vincenzo Innocente  
2011-10-15 13:40:31 UTC ---
I now moved to a more realistic case that can be reduced to this: 

void loop(float *  x, int n) {
  for (int i=0;i!=n; ++i)
x[i]=x[i+n]+x[i+2*n];
}


and it creates aliases even if the memory region are clearly disjoint:
(used gcc version 4.7.0 20111015 (experimental) (GCC) )
keep here or open an other "enhancement request"?

2: versioning for alias required: can't determine dependence between *D.2199_12
and *D.2195_8
2: mark for run-time aliasing test between *D.2199_12 and *D.2195_8
2: versioning for alias required: can't determine dependence between *D.2205_18
and *D.2195_8
2: mark for run-time aliasing test between *D.2205_18 and *D.2195_8
2: Vectorizing an unaligned access.
2: Vectorizing an unaligned access.
2: Vectorizing an unaligned access.
2: vect_model_load_cost: unaligned supported by hardware.
2: vect_model_load_cost: inside_cost = 2, outside_cost = 0 .
2: vect_model_load_cost: unaligned supported by hardware.
2: vect_model_load_cost: inside_cost = 2, outside_cost = 0 .
2: vect_model_simple_cost: inside_cost = 1, outside_cost = 0 .
2: vect_model_store_cost: unaligned supported by hardware.
2: vect_model_store_cost: inside_cost = 2, outside_cost = 0 .
2: cost model: Adding cost of checks for loop versioning aliasing.

2: cost model: epilogue peel iters set to vf/2 because loop iterations are
unknown .
2: Cost model analysis: 
  Vector inside of loop cost: 7
  Vector outside of loop cost: 19
  Scalar iteration cost: 4
  Scalar outside cost: 1
  prologue iterations: 0
  epilogue iterations: 2
  Calculated minimum iters for profitability: 7

2:   Profitability threshold = 6


Vectorizing loop at Arena.cpp:2

2: Profitability threshold is 6 loop iterations.
2: create runtime check for data references *D.2199_12 and *D.2195_8
2: create runtime check for data references *D.2205_18 and *D.2195_8
2: created 2 versioning for alias checks.

2: LOOP VECTORIZED.
Arena.cpp:1: note: vectorized 1 loops in function.


[Bug bootstrap/50738] [4.7 Regression] Bootstrap failure at revision 180028 on powerpc-apple-darwin9

2011-10-15 Thread amodra at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50738

Alan Modra  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #2 from Alan Modra  2011-10-15 13:41:00 
UTC ---
Oops, sorry, I didn't mean to commit the HAVE_simple_return test (which is a
change from my posted patch).


[Bug middle-end/50724] isnan broken by -ffinite-math-only in g++

2011-10-15 Thread ejtttje at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50724

Ethan Tira-Thompson  changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|INVALID |

--- Comment #14 from Ethan Tira-Thompson  2011-10-15 
14:01:11 UTC ---
Richard said:
> The documentation states
> "Allow optimizations for floating-point arithmetic that
> assume that arguments and results are not NaNs or +-Infs."

Yes, that's my argument as well.  Note ARITHMETIC.  Also note MATH in the name
of both --finite-MATH-only, and -ffast-MATH it falls under.  And it doesn't
reference the 'math library' to qualify that.

Basically, if you want to close on this point, I want to see you explicitly
argue why the classification functions should be considered arithmetic.

I'm going to nail this down and list there are 5 classification functions
(fpclassify, infinite, isinf, isnan, isnormal) and the vast majority of the
other library functions are obviously proper arithmetic operations.  The ones
that aren't (signbit, copysign, nextafter, nan), you're exactly right that we
should carefully consider the result of NaN optimization ("special cases"). 
You don't have to do this if *you* don't want to, but it should be done and it
sounds like no one has.

> This has been discussed to death already, and the present behavior is how
> GCC behaved since ever.

Except also NOT TRUE.  It currently doesn't behave this way with math.h.  It
didn't behave this way in 4.1 (Fedora) or 4.2 (Apple).  I only got screwed by
this by the CHANGE in behavior on upgrading to 4.4.  (Not sure about 4.3).  I
already presented this in the original post at the top (except the Apple test
is a new data point; FYI Apple gcc math.h also 'works', so either 4.2 was
generally consistent or Apple likes to patch theirs for consistency)

This is further evidence gcc has not had a good policy discussion of where NaN
optimizations should be applied, because the implementation keeps changing, and
it's not even consistent between math.h and cmath within any given version
other than 4.2-Apple.

Marc said:
>> __FINITE_MATH_ONLY__
> Not very portable afaik.

Neither is -ffast-math, add a 'defined(__FINITE_MATH_ONLY__) &&' and it will be
applied opportunistically when available, or even better: the user can
-D__FINITE_MATH_ONLY__=1 themselves on non-gcc platforms and still get the
performance benefit you're looking for even without -ffast-math support, so
it's a double win.  IMHO, on the other hand it's harder and more error prone to
override isnan with my own implementation.


[Bug target/50737] FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?

2011-10-15 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

--- Comment #7 from Eric Botcazou  2011-10-15 
14:56:44 UTC ---
> ... but looking at Dwarf2 frames dump, there is no "S" in any of the CIE
> augmentation data.

Try to add

  fs->signal_frame = 1;

at the end of alpha_fallback_frame_state then.


[Bug c++/50734] const and pure attributes don't have the effect as in C

2011-10-15 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50734

--- Comment #2 from joseph at codesourcery dot com  2011-10-15 15:47:27 UTC ---
On Sat, 15 Oct 2011, rguenth at gcc dot gnu.org wrote:

> This is because f can throw, you need to mark it nothrow as well in C++.
> Whether something throws or accesses global memory is orthogonal.
> Works with -fno-exceptions.

I don't see the difference here from C.  In C, f might exit the program or 
call longjmp (if you allow such functions to throw, I'd have thought they 
could also not-return in other ways) - but if it does, the exit status, or 
where it longjmps do, will only depend on the global state visible to f, 
meaning that it will do so on the first time through the loop.  The same 
reasoning that it's safe to hoist the call out of the loop in C - the loop 
is guaranteed to call f at least once with the same state as if it is 
called before the loop - should apply in C++; throwing from a hoisted call 
could not be distinguished by a catcher from throwing from the first call 
in the loop.


[Bug target/50737] FAIL: Throw_3 -O3 execution, generic dwarf2 EH problem?

2011-10-15 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50737

--- Comment #8 from Uros Bizjak  2011-10-15 16:35:16 
UTC ---
(In reply to comment #7)
> > ... but looking at Dwarf2 frames dump, there is no "S" in any of the CIE
> > augmentation data.
> 
> Try to add
> 
>   fs->signal_frame = 1;
> 
> at the end of alpha_fallback_frame_state then.

Whoa, Throw_3 passes with following patch:

Index: config/alpha/linux-unwind.h
===
--- config/alpha/linux-unwind.h(revision 179788)
+++ config/alpha/linux-unwind.h(working copy)
@@ -74,5 +74,7 @@
   fs->regs.reg[64].how = REG_SAVED_OFFSET;
   fs->regs.reg[64].loc.offset = (long)&sc->sc_pc - new_cfa;
   fs->retaddr_column = 64;
+  fs->signal_frame = 1;
+
   return _URC_NO_REASON;
 }

I'm doing full bootstrap+regression test.


[Bug regression/49498] [4.7 Regression]: gcc.dg/uninit-pred-8_b.c bogus warning line 20

2011-10-15 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49498

Kai Tietz  changed:

   What|Removed |Added

 CC||ktietz at gcc dot gnu.org

--- Comment #13 from Kai Tietz  2011-10-15 17:10:11 
UTC ---
This bug seems to be caused by vrp's jump-threading and branching into
different if-branch

For example this case gets expanded by vrp to:

int g;
void bar();
void blah(int);

int foo (int n, int l, int m, int r)
{
  int v;

  int v;

  if ((n != 0) & (l != 0))
v = r;

  if (m) g++;
  else   bar();

  if ( n && l)
  blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */

  if (l ) if ( n)
  blah(v); /* { dg-bogus "uninitialized" "bogus warning" } */

  return 0;
}

foo (int n, int l, int m, int r)
{
  int v;
  int g.3;
  int g.2;
  _Bool D.2766;
  _Bool D.2765;
  _Bool D.2764;

:
  D.2764_3 = n_2(D) != 0;
  D.2765_5 = l_4(D) != 0;
  D.2766_6 = D.2764_3 & D.2765_5;
  if (D.2766_6 != 0)
goto ;
  else
goto ;

:

:
  # v_1 = PHI 
  if (m_10(D) != 0)
goto ;
  else
goto ;

:
  g.2_11 = g;
  g.3_12 = g.2_11 + 1;
  g = g.3_12;
  goto ;

:
  bar ();

:
  if (D.2766_6 != 0)
goto ;
  else
goto ;

:
  blah (v_1);
  goto ;
:
  if (l_4(D) != 0)
goto ;
  else
goto ;

:
  if (n_2(D) != 0)
goto ;
  else
goto ;

:
  blah (v_1);

:
  return 0;

:
  goto ;

}

Of interest is the insert goto at  to  via .
 itself is the inner branch of the 'if (l ) if ( n)'.  So 'if ( n)' has
two users, and so it gets warned, as it isn't clear to later check, that 's condition is for  also true. IMHO vrp needs to learn that 
should be the target of  instead.

That -mbranch-costs shows for such cases some effect, is caused by
combining/not-combining if-conditions.

To solve this, we shouldn't make differences in AST about branching-costs high
or low.  The tree-ssa-ifcombine pass should run before (and maybe after as now)
first vrp pass, and should try to merge if-s together as well.  In one of the
last gimple-passes then we should actually apply to conditions the branching
rule and break-up conditions to their if-chains.


[Bug middle-end/50724] isnan broken by -ffinite-math-only in g++

2011-10-15 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50724

Andrew Pinski  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution||INVALID

--- Comment #15 from Andrew Pinski  2011-10-15 
18:00:10 UTC ---
It has always been assumed that arithmetic includes isnan.  isnan can be
implemented as a macro defining to !(a==a) which then becomes an arithmetic.


[Bug middle-end/50598] [4.7 Regression] Undefined symbols: "___emutls_v.*", ... on *-apple-darwin*

2011-10-15 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50598

--- Comment #4 from Dominique d'Humieres  2011-10-15 
18:36:00 UTC ---
The difference for the test libgomp.c++/pr24455.C comes from the companion file
libgomp.c++/pr24455-1.C. With gcc/cgraphunit.c in revision 179429 reverted,
pr24455-1.s is

[macbook] f90/bug% cat pr24455-1_rev.s
.globl ___emutls_v.i
.data
.align 5
___emutls_v.i:
.quad4
.quad4
.quad0
.quad0
.constructor
.destructor
.align 1
.subsections_via_symbols

while for trunk it is

[macbook] f90/bug% cat pr24455-1_orig.s
.constructor
.destructor
.align 1
.subsections_via_symbols


[Bug target/50678] [4.7 Regression] FAIL: c52104y on x86_64-apple-darwin10

2011-10-15 Thread iains at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50678

--- Comment #29 from Iain Sandoe  2011-10-15 19:33:25 
UTC ---
(In reply to comment #28)
> > OK. well  libgcc_s or libSystem contains the unwinder, depending on whether
> > it's darwin9 or darwin10 (and assuming that there's no insertion caused by a
> > DYLD_LIBRARY_PATH).  I'll have to trawl through it in more detail.
> 
> I'll try as well.

so far, I added a little debugging code to init.c and looked at the params into
__gnat_error_handler.  AFAICT it looks perfectly sensible - and the "Right
Thing" seems to happen with the stack area being recognized (for the probe) and
the exception correctly chosen.  The saved exception state seems OK (if one
arranges to examine ucontext).

however I've not got far through Raise_From_Signal_Handler  () - if one
continues from there it ends with a loop on x86-64/darwin9 and another segv on
x86-64/darwin10.

The thing that's itching slightly is that there is a syscall (in
__gnat_error_handler ) to switch the signal stack - before the raise, and I
wonder if the use of the alt sigstack is what's causing the problem.  One would
imagine that anything as radical as a missing reg. save/rest in eh would be
spotted outside Ada ;-)

I might try to cook up a simplified 'c' mimicry and see if that fails too.

The generated eh_frame data is unchanged from O0-O2 .. 

... the exception tables differ - but I guess that reflects code motion in the
different optimizations.


[Bug c++/50732] [type_traits] is_base_of unnecessarily instantiates Base (which shouldn't be instantiated)

2011-10-15 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50732

--- Comment #2 from paolo at gcc dot gnu.org  
2011-10-15 19:49:36 UTC ---
Author: paolo
Date: Sat Oct 15 19:49:33 2011
New Revision: 180048

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180048
Log:
/cp
2011-10-15  Paolo Carlini  

PR c++/50732
* semantics.c (finish_trait_expr): Do not try to instantiate the
the base type of an __is_base_of trait.
(check_trait_type): Return a tree; use complete_type_or_else.

/testsuite
2011-10-15  Paolo Carlini  

PR c++/50732
* g++.dg/ext/is_base_of_incomplete.C: New.
* g++.dg/ext/is_base_of_diagnostic.C: Adjust dg-errors.
* g++.dg/ext/unary_trait_incomplete.C: Likewise.

Added:
trunk/gcc/testsuite/g++.dg/ext/is_base_of_incomplete.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/semantics.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/ext/is_base_of_diagnostic.C
trunk/gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C


[Bug c++/50732] [type_traits] is_base_of unnecessarily instantiates Base (which shouldn't be instantiated)

2011-10-15 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50732

Paolo Carlini  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.7.0

--- Comment #3 from Paolo Carlini  2011-10-15 
19:50:50 UTC ---
Fixed.


[Bug libstdc++/49894] [C++0x] Uniform initialization in constructor

2011-10-15 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49894

Paolo Carlini  changed:

   What|Removed |Added

 CC|jwakely.gcc at gmail dot|
   |com |

--- Comment #9 from Paolo Carlini  2011-10-15 
19:53:22 UTC ---
Indeed. Thanks a lot!


[Bug target/50739] New: [avr] nameless error with -fmerge-all-constants

2011-10-15 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50739

 Bug #: 50739
   Summary: [avr] nameless error with -fmerge-all-constants
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: g...@gcc.gnu.org
CC: eric.wedding...@atmel.com
  Host: i386-mingw32
Target: avr
 Build: i686-linux-gnu


With the source that will follow, I get the following error message (same
without -da):

$ avr-gcc -fmerge-all-constants -mmcu=atmega88 -S foo.c -da

foo.c:18: confused by earlier errors, bailing out

foo.s is printed but the output stops after printing 
__c.1229:
.string"a"

see following attachment.

Trunk versions that show the problem: r179594, r179997.

Configured with: ../../gcc.gnu.org/trunk/configure --target=avr
--prefix=/local/gnu/install/gcc-4.7-pgm-mingw32 --host=i386-mingw32
--build=i686-linux-gnu --enable-languages=c,c++ --disable-nls --disable-shared
--disable-lto --disable-checking --with-dwarf2

Thread model: single
gcc version 4.7.0 20111014 (experimental) (GCC) 

GNU C (GCC) version 4.7.0 20111014 (experimental) (avr)
compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version
5.0.1, MPFR version 3.0.0-p8, MPC version 0.8.2


[Bug target/50678] [4.7 Regression] FAIL: c52104y on x86_64-apple-darwin10

2011-10-15 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50678

--- Comment #30 from Eric Botcazou  2011-10-15 
20:49:03 UTC ---
> however I've not got far through Raise_From_Signal_Handler  () - if one
> continues from there it ends with a loop on x86-64/darwin9 and another segv on
> x86-64/darwin10.

You need to compile with -fstack-check.  Then you'll be able to debug the
unwinding phase.  Here are some possible breakpoints:

0x7fff85b7a260 in unw_init_local () from /usr/lib/libSystem.B.dylib
(gdb) disass
Dump of assembler code for function unw_init_local:

Breakpoint 3, 0x7fff85b9fe32 in unwind_phase2 ()
   from /usr/lib/libSystem.B.dylib
(gdb) disass
Dump of assembler code for function unwind_phase2:

0x7fff85ba0150 in libunwind::Registers_x86_64::jumpto() ()
   from /usr/lib/libSystem.B.dylib
(gdb) disass
Dump of assembler code for function _ZN9libunwind16Registers_x86_646jumptoEv:
=> 0x7fff85ba0150 <+0>: mov0x38(%rdi),%rax

The context from which jumpto restores the registers has the wrong %rbx line.

> The thing that's itching slightly is that there is a syscall (in
> __gnat_error_handler ) to switch the signal stack - before the raise, and I
> wonder if the use of the alt sigstack is what's causing the problem.

This call doesn't actually do anything.  The stack is switched by the system
before __gnat_error_handler is entered and all the processing is done using the
alternate stack, until execution is resumed in the exception handler.

> One would imagine that anything as radical as a missing reg. save/rest in eh
> would be spotted outside Ada ;-)

Java is the only other language that supports this kind of things though.


[Bug target/50739] [avr] nameless error with -fmerge-all-constants

2011-10-15 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50739

--- Comment #1 from Georg-Johann Lay  2011-10-15 
20:50:21 UTC ---
Created attachment 25510
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25510
foo.c


[Bug c++/50736] [C++0x] ISO_IEC_14882-2011-5.1.2/10 - bug

2011-10-15 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50736

--- Comment #1 from Paolo Carlini  2011-10-15 
20:50:58 UTC ---
(of course no need to use  to test this)


[Bug target/50739] [avr] nameless error with -fmerge-all-constants

2011-10-15 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50739

Georg-Johann Lay  changed:

   What|Removed |Added

  Known to work||4.6.2
   Target Milestone|--- |4.7.0


[Bug target/50739] [avr] nameless error with -fmerge-all-constants

2011-10-15 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50739

--- Comment #2 from Georg-Johann Lay  2011-10-15 
20:51:50 UTC ---
Created attachment 25511
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25511
foo.s


[Bug target/50739] [avr] nameless error with -fmerge-all-constants

2011-10-15 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50739

Georg-Johann Lay  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-10-15
 Ever Confirmed|0   |1


[Bug c++/38980] [4.4/4.5/4.6 Regression] missing -Wformat warning on const char format string

2011-10-15 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38980

Paolo Carlini  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED
   Target Milestone|4.4.7   |4.7.0

--- Comment #6 from Paolo Carlini  2011-10-15 
20:54:43 UTC ---
Fixed for 4.7.0, wontfix 4.4/4.5/4.6.


[Bug c++/50593] improve __attribute__((format(printf)))

2011-10-15 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50593

Paolo Carlini  changed:

   What|Removed |Added

 CC||jason at gcc dot gnu.org

--- Comment #3 from Paolo Carlini  2011-10-15 
20:56:42 UTC ---
PR38980 bits fixed for 4.7.0. Maybe Jason can have a look to the constexpr
bits..


[Bug c++/50593] improve __attribute__((format(printf)))

2011-10-15 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50593

Paolo Carlini  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-10-15
 Ever Confirmed|0   |1


[Bug c++/50593] [C++0x] improve __attribute__((format(printf)))

2011-10-15 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50593

--- Comment #4 from Jason Merrill  2011-10-15 
21:16:47 UTC ---
Seems like it's a matter of changing check_format_arg to call a more general
front-end interface than decl_constant_value, one that could accept an
arbitrary expression rather than just a decl, and would call
maybe_constant_value.


[Bug c++/42743] Inexplicable error message with constructing SIMD values

2011-10-15 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42743

Paolo Carlini  changed:

   What|Removed |Added

 CC||jsm28 at gcc dot gnu.org

--- Comment #2 from Paolo Carlini  2011-10-15 
21:26:19 UTC ---
The first part of this I also noticed some time ago (and mentioned in another
PR): roughly speaking, __m128 doesn't seem default-constructible. Is there
something we can do about that? Seems rather weird, naively.


[Bug tree-optimization/50717] [4.7 Regression] Silent code gen fault with incorrect widening of multiply

2011-10-15 Thread ams at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50717

--- Comment #6 from Andrew Stubbs  2011-10-15 21:29:12 
UTC ---
Patch posted here:

http://gcc.gnu.org/ml/gcc-patches/2011-10/msg01397.html


[Bug c++/41847] warning: array subscript is above array bounds

2011-10-15 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41847

--- Comment #6 from Paolo Carlini  2011-10-15 
21:30:07 UTC ---
Should this be target or middle-end instead of c++? (I have no easy way to
check whether it's still an issue today)


[Bug target/50678] [4.7 Regression] FAIL: c52104y on x86_64-apple-darwin10

2011-10-15 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50678

--- Comment #31 from Eric Botcazou  2011-10-15 
21:34:32 UTC ---
There is some suspicious code in

#0  0x7fff85c75d48 in
libunwind::DwarfInstructions::stepWithDwarf(libunwind::LocalAddressSpace&,
unsigned long long, unsigned long long, libunwind::Registers_x86_64&) ()
   from /usr/lib/libSystem.B.dylib

(gdb) disass
Dump of assembler code for function
_ZN9libunwind17DwarfInstructionsINS_17LocalAddressSpaceENS_16Registers_x86_64EE13stepWithDwarfERS1_yyRS2_:
   0x7fff85c75990 <+0>: push   %rbp

   0x7fff85c75c81 <+753>:   mov-0x860(%rbp),%rax
   0x7fff85c75c88 <+760>:   mov%rax,0xa0(%r13)
   0x7fff85c75c8f <+767>:   mov-0x868(%rbp),%rdx
   0x7fff85c75c96 <+774>:   mov%rdx,0x98(%r13)
   0x7fff85c75c9d <+781>:   mov-0x870(%rbp),%rcx
   0x7fff85c75ca4 <+788>:   mov%rcx,0x90(%r13)
   0x7fff85c75cab <+795>:   mov-0x878(%rbp),%rax
   0x7fff85c75cb2 <+802>:   mov%rax,0x88(%r13)
   0x7fff85c75cb9 <+809>:   mov-0x8e8(%rbp),%rdx
   0x7fff85c75cc0 <+816>:   mov%rdx,0x78(%r13)
   0x7fff85c75cc4 <+820>:   mov-0x8e0(%rbp),%rcx
   0x7fff85c75ccb <+827>:   mov%rcx,0x70(%r13)
   0x7fff85c75ccf <+831>:   mov-0x8d8(%rbp),%rax
   0x7fff85c75cd6 <+838>:   mov%rax,0x68(%r13)
   0x7fff85c75cda <+842>:   mov-0x8d0(%rbp),%rdx
   0x7fff85c75ce1 <+849>:   mov%rdx,0x60(%r13)
   0x7fff85c75ce5 <+853>:   mov-0x8c8(%rbp),%rcx
   0x7fff85c75cec <+860>:   mov%rcx,0x58(%r13)
   0x7fff85c75cf0 <+864>:   mov-0x8c0(%rbp),%rax
   0x7fff85c75cf7 <+871>:   mov%rax,0x50(%r13)
   0x7fff85c75cfb <+875>:   mov-0x8b8(%rbp),%rdx
   0x7fff85c75d02 <+882>:   mov%rdx,0x48(%r13)
   0x7fff85c75d06 <+886>:   mov-0x8b0(%rbp),%rcx
   0x7fff85c75d0d <+893>:   mov%rcx,0x40(%r13)
   0x7fff85c75d11 <+897>:   mov-0x8a8(%rbp),%rax
   0x7fff85c75d18 <+904>:   mov%rax,0x30(%r13)
   0x7fff85c75d1c <+908>:   mov-0x8a0(%rbp),%rdx
   0x7fff85c75d23 <+915>:   mov%rdx,0x20(%r13)
   0x7fff85c75d27 <+919>:   mov-0x898(%rbp),%rcx
   0x7fff85c75d2e <+926>:   mov%rcx,0x28(%r13)
   0x7fff85c75d32 <+930>:   mov-0x890(%rbp),%rax
   0x7fff85c75d39 <+937>:   mov%rax,0x8(%r13)
   0x7fff85c75d3d <+941>:   mov-0x888(%rbp),%rdx
   0x7fff85c75d44 <+948>:   mov%rdx,0x10(%r13)
   0x7fff85c75d48 <+952>:   mov-0x880(%rbp),%rcx
   0x7fff85c75d4f <+959>:   mov%rcx,0x18(%r13)
   0x7fff85c75d53 <+963>:   mov%r15,0x0(%r13)
   0x7fff85c75d57 <+967>:   mov%r12,0x38(%r13)
   0x7fff85c75d5b <+971>:   mov%rbx,0x80(%r13)

-0x860(%rbp) seems to be a saved context:

(gdb) x/gx (-0x860 + $rbp - 8 * 4)
0x100036900:0x7fff5fbff9f0
(gdb) x/gx (-0x860 + $rbp - 8 * 5)
0x1000368f8:0x7fff5f3ff9f0
(gdb) x/gx (-0x860 + $rbp - 8 * 6)
0x1000368f0:0x
(gdb) x/gx (-0x860 + $rbp - 8 * 7)
0x1000368e8:0x7fff5fbff9f0
(gdb) x/gx (-0x860 + $rbp - 8 * 8)
0x1000368e0:0x7fff4fbfc9f0
(gdb) x/gx (-0x860 + $rbp - 8 * 9)
0x1000368d8:0x7fff5fbffa30
(gdb) x/gx (-0x860 + $rbp - 8 * 10)
0x1000368d0:0x8002
(gdb) x/gx (-0x860 + $rbp - 8 * 11)
0x1000368c8:0x1000
(gdb) x/gx (-0x860 + $rbp - 8 * 12)
0x1000368c0:0x8002
(gdb) x/gx (-0x860 + $rbp - 8 * 13)
0x1000368b8:0x1001
(gdb) x/gx (-0x860 + $rbp - 8 * 14)
0x1000368b0:0xfffa
(gdb) x/gx (-0x860 + $rbp - 8 * 15)
0x1000368a8:0x000d
(gdb) x/gx (-0x860 + $rbp - 8 * 16)
0x1000368a0:0x
(gdb) x/gx (-0x860 + $rbp - 8 * 17)
0x100036898:0x0001

This is the same context as the one displayed by GDB when the probe hits:

(gdb) info reg
rax0x1010   268435472
rbx0x7fff5fbff9f0   140734799804912
rcx0x7fff5f3ff9f0   140734791416304
rdx0x0  0
rsi0x7fff5fbff9f0   140734799804912
rdi0x7fff4fbfc9f0   140734531357168
rbp0x7fff5fbffa30   0x7fff5fbffa30
rsp0x7fff5fbff9f0   0x7fff5fbff9f0
r8 0x8002   2147483650
r9 0x1000   268435456
r100x8002   2147483650
r110x1001   268435457
r120xfffa   -6
r130xd  13
r140x0  0
r150x1  1

Now, at the end of the code sequence, the context pointed to by %r13 is:

(gdb) x/gx ($r13 + 8 * 0)
0x1000372b0:0x1010
(gdb) x/gx ($r13 + 8 * 1)
0x1000372b8:0x
(gdb) x/gx ($r13 + 8 * 2)
0x1000372c0:0x7fff5f3ff9f0
(gdb) x/gx ($r13 + 8 * 3)
0x1000372c8:0x7fff5fbff9f0
(gdb) x/gx ($r13 + 8 * 4)
0x1000372d0:0x7fff4fbfc9f0
(gdb) x/gx ($r13 + 8 * 5)
0x1000372d8:0x7fff5fbff9f0
(gdb) x/gx ($r13 + 8 * 6)
0x1000372e0:0x7

[Bug c/35649] Incorrect printf warning: expect double has float

2011-10-15 Thread sgh at sgh dot dk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35649

Søren Holm  changed:

   What|Removed |Added

 CC||sgh at sgh dot dk

--- Comment #11 from Søren Holm  2011-10-15 21:48:25 UTC ---
Iøm having the same isssue whne compiling with -fshort-double


[Bug c++/50593] [C++0x] improve __attribute__((format(printf)))

2011-10-15 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50593

--- Comment #5 from Paolo Carlini  2011-10-15 
21:56:57 UTC ---
I see. I'll give it some thought.


[Bug target/50678] [4.7 Regression] FAIL: c52104y on x86_64-apple-darwin10

2011-10-15 Thread iains at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50678

--- Comment #32 from Iain Sandoe  2011-10-15 22:37:41 
UTC ---
thanks Eric, you're going much quicker then me ;) ... had some other things to
do.
I think libUnwind is released as OS these days, so it should be possible to
look ... will try to find it tomorrow.


[Bug driver/50740] New: CPUID leaf 7 for BMI/BMI2/AVX2 feature detection not qualified with max_level and doesn't use subleaf

2011-10-15 Thread craig.topper at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50740

 Bug #: 50740
   Summary: CPUID leaf 7 for BMI/BMI2/AVX2 feature detection not
qualified with max_level and doesn't use subleaf
Classification: Unclassified
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: driver
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: craig.top...@gmail.com


The cpuid code for detecting BMI, BMI2, and AVX2 support needs to be qualified
with max_level >= 7. Additionally, it should use __cpuid_count instead of
__cpuid because leaf 7 uses subleafs just like leaf 4.

Relevant code from i386-driver.c

  __cpuid (0x7, eax, ebx, ecx, edx);

  has_bmi = ebx & bit_BMI;
  has_avx2 = ebx & bit_AVX2;
  has_bmi2 = ebx & bit_BMI2;