[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
I don't see anything strange on it, -Wmaybe-uninitialized is a middle-end
warning and as such very much depends on the optimizations, there is no
guarantee you get the same warnings between different optimization levels,
whether something is found as potentially uninitialized depends heavily e.g. on
inlining, tail recursion etc.  In this case at -O3 the function is first
inlined into itself a small amount of times.  I don't see anything wrong to
warn here, given that the variable indeed is not initialized in some code paths
(if fn2 returns zero).


[Bug middle-end/59737] [4.9 Regression] ice from optimize_inline_calls

2014-02-13 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59737

--- Comment #6 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Fixed.


[Bug libgcc/60166] ARM default NAN encoding violates EABI

2014-02-13 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60166

Ramana Radhakrishnan ramana at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ramana at gcc dot gnu.org

--- Comment #1 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
Isn't this a dup of PR59833.


[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread vincent-gcc at vinc17 dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #2 from Vincent Lefèvre vincent-gcc at vinc17 dot net ---
Well, the code paths in question do not necessarily exist (you could say the
same thing with -O2, where the function is not inlined: there may be some code
paths for which fn1() doesn't initialize c).

Actually the number of maybe-uninitialized warnings should decrease when the
optimization level increases, because of additional knowledge, not the
opposite.

[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org ---
(In reply to Vincent Lefèvre from comment #2)
 Well, the code paths in question do not necessarily exist (you could say the
 same thing with -O2, where the function is not inlined: there may be some
 code paths for which fn1() doesn't initialize c).

The code path exists in the code, the fact that perhaps in your program such
code path is never taken doesn't mean it is undesirable to warn about it.
GCC has two kinds of warnings, the is uninitialized one where particular code,
if executed, will always use uninitialized value, and maybe uninitialized,
where it will use uninitialized value only conditionally.  That is the case
here.
 
 Actually the number of maybe-uninitialized warnings should decrease when
 the optimization level increases, because of additional knowledge, not the
 opposite.

No, usually with more inlining it increases and should.  When fn1 is not
inlined, GCC intentionally does not warn that c might be uninitialized because
maybe the function call could use the value or not set it unconditionally, that
would lead to so huge amount of false positives for the warning that nobody
would be willing to use the warning.

[Bug c++/60167] [4.8/4.9 regression] Bogus error: conflicting declaration

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60167

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P1
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-02-13
 CC||jakub at gcc dot gnu.org,
   ||jason at gcc dot gnu.org
   Target Milestone|--- |4.8.3
Summary|[4.9 regression] Bogus  |[4.8/4.9 regression] Bogus
   |error: conflicting  |error: conflicting
   |declaration |declaration
 Ever confirmed|0   |1

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
Started with r207167 and in r207189 has been introduced on the 4.8 branch as
well.


[Bug gcov-profile/60171] New: SEGFAULT when compiling with --coverage on travis-ci

2014-02-13 Thread lomato at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60171

Bug ID: 60171
   Summary: SEGFAULT when compiling with --coverage on travis-ci
   Product: gcc
   Version: 4.6.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: gcov-profile
  Assignee: unassigned at gcc dot gnu.org
  Reporter: lomato at gmail dot com

I'm experiencing a bug when compiling and running a code on travis-ci.
In 2 different projects, when added --coverage, they both crash. Travis-ci is
an automated platform that doesn't allow me to have an interactive shell, but I
can run gdb scripts on it. I've filed a bug on their github account, and they
suggested me to open one here, to have help/suggestions from you too.

Here you can find the bug opened on travis

https://github.com/travis-ci/travis-ci/issues/1966

where you can watch the runs with the segfaults and the gdb runs.

The strangest thing is that when backtracing on gdb, it returns me a
meaningless line (the last one of the source file, a line with } ).


[Bug target/60169] [4.8/4.9 Regression] ICE ARM thumb1 handles far jump

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60169

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.3
Summary|ICE ARM thumb1 handles far  |[4.8/4.9 Regression] ICE
   |jump|ARM thumb1 handles far jump


[Bug libgcc/60166] ARM default NAN encoding violates EABI

2014-02-13 Thread joey.ye at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60166

--- Comment #2 from Joey Ye joey.ye at arm dot com ---
(In reply to Ramana Radhakrishnan from comment #1)
 Isn't this a dup of PR59833.

It isn't. This one is only impacts QNAN.


[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to Jakub Jelinek from comment #3)
 (In reply to Vincent Lefèvre from comment #2)
  Well, the code paths in question do not necessarily exist (you could say the
  same thing with -O2, where the function is not inlined: there may be some
  code paths for which fn1() doesn't initialize c).
 
 The code path exists in the code, the fact that perhaps in your program such
 code path is never taken doesn't mean it is undesirable to warn about it.
 GCC has two kinds of warnings, the is uninitialized one where particular
 code, if executed, will always use uninitialized value, and maybe
 uninitialized, where it will use uninitialized value only conditionally. 
 That is the case here.

Where it of course still only assumes that the function is entered at all.

[Bug rtl-optimization/60162] [4.9 Regression][lra] mlra appears to be using the FP registers for integer values and then moving on to GPR registers.

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60162

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.9.0
Summary|[4.9 lra regression] mlra   |[4.9 Regression][lra] mlra
   |appears to be using the FP  |appears to be using the FP
   |registers for integer   |registers for integer
   |values and then moving on   |values and then moving on
   |to GPR registers.   |to GPR registers.


[Bug tree-optimization/60172] New: ARM performance regression from trunk@207239

2014-02-13 Thread joey.ye at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60172

Bug ID: 60172
   Summary: ARM performance regression from trunk@207239
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: joey.ye at arm dot com

Dhrystone on Cortex-M4 drops by 1.5% with this patch:

2014-01-29  Richard Biener  rguent...@suse.de

PR tree-optimization/58742
* tree-ssa-forwprop.c (associate_pointerplus): Rename to
associate_pointerplus_align.
(associate_pointerplus_diff): New function.
(associate_pointerplus): Likewise.  Call associate_pointerplus_align
and associate_pointerplus_diff.

* gcc.dg/pr58742-1.c: New testcase.
* gcc.dg/pr58742-2.c: Likewise.
* gcc.dg/pr58742-3.c: Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207239

Options used: -O2 -fno-inline -fno-common


[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread vincent-gcc at vinc17 dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #5 from Vincent Lefèvre vincent-gcc at vinc17 dot net ---
(In reply to Jakub Jelinek from comment #3)
 The code path exists in the code,

It exists *only* if fn2() can return 0. But the fact is that in the reality,
this can never happen (with the original non-reduced code, this can even be
proved).

 the fact that perhaps in your program such
 code path is never taken doesn't mean it is undesirable to warn about it.
 GCC has two kinds of warnings, the is uninitialized one where particular
 code, if executed, will always use uninitialized value, and maybe
 uninitialized, where it will use uninitialized value only conditionally. 
 That is the case here.

But in this case, the warning is missing with -O2.

 No, usually with more inlining it increases and should.  When fn1 is not
 inlined, GCC intentionally does not warn that c might be uninitialized
 because maybe the function call could use the value or not set it
 unconditionally, that would lead to so huge amount of false positives for
 the warning that nobody would be willing to use the warning.

This is the same problem with -O3: there is a false positive here. So, you have
to choose whether you want to avoid false positives or not.

[Bug gcov-profile/60171] SEGFAULT when compiling with --coverage on travis-ci

2014-02-13 Thread lomato at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60171

--- Comment #1 from Dario Lombardo lomato at gmail dot com ---
On my local platform (ubuntu 12.04, with same version of gcc as travis), I
don't have the problem.


[Bug regression/60173] New: [4.9 Regression]: gcc.dg/binop-xor1.c scan-tree-dump-times

2014-02-13 Thread hp at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60173

Bug ID: 60173
   Summary: [4.9 Regression]: gcc.dg/binop-xor1.c
scan-tree-dump-times
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: regression
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hp at gcc dot gnu.org
CC: ro at techfak dot uni-bielefeld.de
  Host: x86_64-unknown-linux-gnu
Target: cris-axis-elf

This test previously passed, now it fails.
A patch in the revision range (last_known_working:first_known_failing)
207658:207668 exposed or caused this regression.  Since then it fails as
follows:

Running /tmp/hpautotest-gcc1/gcc/gcc/testsuite/gcc.dg/dg.exp ...
FAIL: gcc.dg/binop-xor1.c scan-tree-dump-times optimized \\^ 1

This test also fails for at least the following targets (revision, link to
gcc-testresults@)
powerpc64-unknown-linux-gnu (207741
http://gcc.gnu.org/ml/gcc-testresults/2014-02/msg00830.html),
m68k-unknown-linux-gnu (unknown,
http://gcc.gnu.org/ml/gcc-testresults/2014-02/msg00849.html),
s390x-ibm-linux-gnu (207735,
http://gcc.gnu.org/ml/gcc-testresults/2014-02/msg00828.html),
powerpc-ibm-aix7.1.0.0 (207693,
http://gcc.gnu.org/ml/gcc-testresults/2014-02/msg00752.html), 

(The failure is not universal, it seems to not fail for at least as many other
targets.)

Author of the single suspect patch CC:ed.


[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org ---
How can the compiler know that fn2 never returns 0, without inlining (not in
this case), some attribute (not provided, gcc right now has returns_nonnull
attribute but that is only for pointers) or some interprocedural analysis)?
Of course, if you want zero false positives, the uninitialized warnings could
not exist, even if you do:
int
foo (void)
{
  int c;
  return c;
}
you could say that warning here is a false positive, because you might actually
never call that function.

For -O2 we don't warn, because then the compiler does see an opaque call that
might be initializing what the arguments points to, might not, but warning in
that case would just mean too many false positives as I've said before.
While for -O3, when it is inlined a few times, the compiler clearly sees code
paths where the value is uninitialized, and has nothing that would hint such
code paths are impossible.
Of course, if fn2 is guaranteed to return non-NULL, why do you even write if
(fn2 (a, 0)) *p1 = b; rather than just
fn2 (a, 0); *p1 = b; ?


[Bug rtl-optimization/60162] [4.9 Regression][lra] mlra appears to be using the FP registers for integer values and then moving on to GPR registers.

2014-02-13 Thread ramana at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60162

--- Comment #2 from Ramana Radhakrishnan ramana at gcc dot gnu.org ---
Created attachment 32120
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32120action=edit
Reduced from gzip.

Command line options. 

-march=armv7-a -mfpu=neon -mfloat-abi=hard -mthumb -O3 -mlra


[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread vincent-gcc at vinc17 dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #7 from Vincent Lefèvre vincent-gcc at vinc17 dot net ---
(In reply to Jakub Jelinek from comment #6)
 How can the compiler know that fn2 never returns 0, without inlining (not in
 this case), some attribute (not provided, gcc right now has returns_nonnull
 attribute but that is only for pointers) or some interprocedural analysis)?

It doesn't know with -O3, but it doesn't know either with -O2 as well. That's
my point (see below).

 For -O2 we don't warn, because then the compiler does see an opaque call
 that might be initializing what the arguments points to, might not, but
 warning in that case would just mean too many false positives as I've said
 before.

I think it should. Or you should avoid the false positives with -O3 too.

 Of course, if fn2 is guaranteed to return non-NULL, why do you even write if
 (fn2 (a, 0)) *p1 = b; rather than just
 fn2 (a, 0); *p1 = b; ?

That's because of creduce. But it seems that I've managed to make the warning
disappear with both -O2 and -O3 even when it is clear that the value is not
initialized. More later...

[Bug tree-optimization/60172] ARM performance regression from trunk@207239

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60172

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2014-02-13
 CC||rguenth at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Please check the rev. after

2014-01-30  Richard Biener  rguent...@suse.de

PR tree-optimization/59993
* tree-ssa-forwprop.c (associate_pointerplus): Check we
can propagate form the earlier stmt and avoid the transform
when the intermediate result is needed.

which avoids a case where extra expresions could have been introduced.

Also ... can you attach the Dhrystone variant you are using?

Also I can double the benchmark score on my machine when using -O3
-fwhole-program.


[Bug plugins/59335] Plugin doesn't build on trunk

2014-02-13 Thread pageexec at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59335

--- Comment #10 from PaX Team pageexec at gmail dot com ---
please reopen, this bug is not fixed yet.


[Bug rtl-optimization/60162] [4.9 Regression][lra] mlra appears to be using the FP registers for integer values and then moving on to GPR registers.

2014-02-13 Thread ktkachov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60162

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-02-13
 CC||ktkachov at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #3 from ktkachov at gcc dot gnu.org ---
I remember noticing weird loads to VFP regs when investigating PR59913 and
looking at the assembly output of genattrtab. That was at least as far back as
r206958.

pinskia: Playing with the TARGET_REGISTER_MOVE_COST hook in arm did not make a
difference, even when I set the move between GPR and VFP regs to ridiculously
high numbers


[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread vincent-gcc at vinc17 dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

Vincent Lefèvre vincent-gcc at vinc17 dot net changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |---

--- Comment #8 from Vincent Lefèvre vincent-gcc at vinc17 dot net ---
(In reply to Vincent Lefèvre from comment #5)
 It exists *only* if fn2() can return 0. But the fact is that in the reality,
 this can never happen (with the original non-reduced code, this can even be
 proved).

After an analysis of the MPFR code, it actually seems to be a bug in MPFR. So,
the problem is the missing warning with -O2.

The -Wmaybe-uninitialized rule given in the gcc man page is (for GCC 4.8):

  -Wmaybe-uninitialized
For an automatic variable, if there exists a path from the function
entry to a use of the variable that is initialized, but there exist
some other paths for which the variable is not initialized, the
compiler emits a warning if it cannot prove the uninitialized paths
are not executed at run time. [...]

This rule does *not* depend on the optimization level, except for the if it
cannot prove the uninitialized paths are not executed at run time part.
Indeed, the fact that a path exists or not is not something that depends on the
optimizations.

Concerning the if it cannot prove the uninitialized paths are not executed at
run time part, GCC should be able to prove more things with -O3 than with -O2,
meaning that -Wmaybe-uninitialized warnings could disappear with -O3 compared
to -O2, but generally not the opposite.

In the original example, GCC cannot prove anything about run time, so that
according to the gcc man page, one should get a warning whatever the
optimization level.

I've another example (similar to the MPFR code):

int fn3 (void);
void fn2 (int *p)
{
  if (fn3 ())
*p = 0;
}
int fn1 (void)
{
  int c;
  fn2 (c);
  return c;
}

GCC doesn't give any may be used uninitialized warning (whether -O2 or -O3 is
used). This is incorrect according to the above rule. BTW, for -O3, this is
surprising because it is similar to the original example.

I'm reopening the bug because the GCC behavior doesn't match the documentation.

[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #9 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to Vincent Lefèvre from comment #8)
 The -Wmaybe-uninitialized rule given in the gcc man page is (for GCC 4.8):
 
   -Wmaybe-uninitialized
 For an automatic variable, if there exists a path from the function
 entry to a use of the variable that is initialized, but there exist
 some other paths for which the variable is not initialized, the
 compiler emits a warning if it cannot prove the uninitialized paths
 are not executed at run time. [...]
 
 This rule does *not* depend on the optimization level, except for the if it
 cannot prove the uninitialized paths are not executed at run time part.
 Indeed, the fact that a path exists or not is not something that depends on
 the optimizations.

The definition of a function changes with inlining ;-)

 Concerning the if it cannot prove the uninitialized paths are not executed
 at run time part, GCC should be able to prove more things with -O3 than
 with -O2, meaning that -Wmaybe-uninitialized warnings could disappear with
 -O3 compared to -O2, but generally not the opposite.
 
 In the original example, GCC cannot prove anything about run time, so that
 according to the gcc man page, one should get a warning whatever the
 optimization level.

f(i) is considered as an initialization of i. This heuristic is necessary,
otherwise the number of false positives would make the warning useless.

 I've another example (similar to the MPFR code):
 
 int fn3 (void);
 void fn2 (int *p)
 {
   if (fn3 ())
 *p = 0;
 }
 int fn1 (void)
 {
   int c;
   fn2 (c);
   return c;
 }
 
 GCC doesn't give any may be used uninitialized warning (whether -O2 or -O3
 is used). This is incorrect according to the above rule. BTW, for -O3, this
 is surprising because it is similar to the original example.

A different optimization pass (CCP) seems to notice that the value returned is
either 0 or something uninitialized and thus must be 0. Maybe there is an
opportunity for a warning there (though again we need to make sure it won't
cause too many false positives).

I don't know why you think warnings should be so well defined. They have always
been a heuristic compromise.

[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #10 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
(In reply to Vincent Lefèvre from comment #8)
 Concerning the if it cannot prove the uninitialized paths are not executed
 at run time part, GCC should be able to prove more things with -O3 than
 with -O2, meaning that -Wmaybe-uninitialized warnings could disappear with
 -O3 compared to -O2, but generally not the opposite.

Your assumption is mistaken because you don't seem to realize something that
Jakub has said repeatedly. GCC doesn't warn *on purpose* for very common code
such as

{
int c;
f(c);
return c;
}

if GCC doesn't know what is going on within f(), because that will trigger a
lot of false positives (although it is easy to build testcases where warning
would have been warranted). At -O3, that code may be converted to

{
   int c;
   if (g())
   c = 3
return c;
}

and then, even though g() may never return false, if GCC cannot prove that,
then GCC will warn, because not warning will case a lot of false negatives.
Such design decisions are based on experience.

Now, I agree that ideally, GCC should warn for your last testcase. But I guess
in that case inlining either doesn't happen or it happens too late, so GCC only
sees the first case. The analysis that GCC performs are predicated on the
transformations leading to better code, otherwise they are not performed. A
tool for static analysis will surely inline as much as it could, not matter if
the code is slower or larger, but this is not how GCC works because GCC is not
a tool for static analysis.

On the other hand, GCC has bugs (missed optimizations, PR24639), and it would
be nice if more people worked on those, but this PR doesn't look like one.

[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

Manuel López-Ibáñez manu at gcc dot gnu.org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu.org

--- Comment #11 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
(In reply to Marc Glisse from comment #9)
 A different optimization pass (CCP) seems to notice that the value returned
 is either 0 or something uninitialized and thus must be 0. Maybe there is an
 opportunity for a warning there (though again we need to make sure it won't
 cause too many false positives).

Actually this missed warning is the infamous PR18501.

[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #12 from Jakub Jelinek jakub at gcc dot gnu.org ---
Only in your reading of the documentation.

You clearly don't know what you are asking for, even the very common case of
pthread_t th;
if (pthread_create (th, NULL, tf, NULL))
  goto fail;
pthread_join (th, NULL);
case would need to be warned about, even when there is nothing wrong about it.
In your testcase, if fn1 isn't inlined, it is the same thing for GCC, a
function call as a black box which could do anything to the memory pointed to
by the escaped pointer (unless the function is say pure or const, at which
point it couldn't store to it).  If it is inlined, the compiler sees it, sees
that a variable is used and in certain path has uninitialized value and in
others initialized, and correctly warns.


[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #13 from Marc Glisse glisse at gcc dot gnu.org ---
(In reply to Manuel López-Ibáñez from comment #10)
 Now, I agree that ideally, GCC should warn for your last testcase. But I
 guess in that case inlining either doesn't happen or it happens too late, so
 GCC only sees the first case.

Actually it is the reverse, inlining happens earlier in this new testcase (the
first example was recursive, which makes the inliner more conservative).

 The analysis that GCC performs are predicated
 on the transformations leading to better code, otherwise they are not
 performed. A tool for static analysis will surely inline as much as it
 could, not matter if the code is slower or larger, but this is not how GCC
 works because GCC is not a tool for static analysis.

Maybe we could have a wiki page explaining what options to tweak (inlining
parameters, etc) for a compilation where you are only interested in warnings?
(I had vaguely mentioned creating -Ow at some point, but that didn't seem such
a good idea)

[Bug ada/60174] New: ICE on ACATS cc3305a

2014-02-13 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

Bug ID: 60174
   Summary: ICE on ACATS cc3305a
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ada
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bernd.edlinger at hotmail dot de

BUILD cc3305a.adb
gnatmake --GCC=/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/xgcc
-B/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ -gnatws -O2 -gnat95
-I/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/testsuite/ada/acats/support
cc3305a.adb -largs --GCC=/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/xgcc
-B/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/xgcc -c
-B/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ -gnatws -O2 -gnat95
-I/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/testsuite/ada/acats/support
cc3305a.adb

Unable to coalesce ssa_names 34 and 399 which are marked as MUST COALESCE.
i_34(ab) and  i_399(ab)
+===GNAT BUG DETECTED==+
| 4.9.0 20140209 (experimental) (armv7l-unknown-linux-gnueabihf) GCC error:|
| SSA corruption   |
| Error detected around cc3305a.adb:35:1   |
| Please submit a bug report; see http://gcc.gnu.org/bugs.html.|
| Use a subject line meaningful to you and us to track the bug.|
| Include the entire contents of this bug box in the report.   |
| Include the exact gcc or gnatmake command that you entered.  |
| Also include sources listed below in gnatchop format |
| (concatenated together with no headers between files).   |
+==+

Please include these source files with error report
Note that list may not be accurate in some cases,
so please double check that the problem can still
be reproduced with the set of files listed.
Consider also -gnatd.n switch (see debug.adb).

/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/system.ads
cc3305a.adb
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/testsuite/ada/acats/support/report.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/s-soflin.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/ada.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/a-except.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/s-parame.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/s-stalib.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/a-unccon.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/s-traent.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/s-stache.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/s-stoele.ads
/home/ed/gnu/gcc-build-arm-linux-gnueabihf/gcc/ada/rts/s-stoele.adb


raised TYPES.UNRECOVERABLE_ERROR : comperr.adb:432
gnatmake: cc3305a.adb compilation error
FAIL:   cc3305a

cat LAST_UPDATED 
Obtained from SVN: trunk revision 207646


[Bug ada/60174] ICE on ACATS cc3305a

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Can you check from the -fdump-tree-all dumps where i_34(ab) and i_399(ab)
start to have overlapping life-ranges?


[Bug middle-end/60175] New: ICE on gcc.dg/asan/nosanitize-and-inline.c

2014-02-13 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60175

Bug ID: 60175
   Summary: ICE on gcc.dg/asan/nosanitize-and-inline.c
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bernd.edlinger at hotmail dot de

/home/ed/gnu/gcc-4.9-20140209/gcc/testsuite/gcc.dg/asan/nosanitize-and-inline.c:
In function 'main':^M
/home/ed/gnu/gcc-4.9-20140209/gcc/testsuite/gcc.dg/asan/nosanitize-and-inline.c:57:1:
internal compiler error: in check_probability, at basic-block.h:950^M
0xc561f check_probability^M
../../gcc-4.9-20140209/gcc/basic-block.h:950^M
0x23aaab check_probability^M
../../gcc-4.9-20140209/gcc/cfgloopmanip.c:1332^M
0x23aaab combine_probabilities^M
../../gcc-4.9-20140209/gcc/basic-block.h:959^M
0x23aaab duplicate_loop_to_header_edge(loop*, edge_def*, unsigned int,
simple_bitmap_def*, edge_def*, vecedge_def*, va_heap, vl_ptr*, int)^M
../../gcc-4.9-20140209/gcc/cfgloopmanip.c:1264^M
0x473d8f peel_loop_completely^M
../../gcc-4.9-20140209/gcc/loop-unroll.c:609^M
0x473d8f peel_loops_completely^M
../../gcc-4.9-20140209/gcc/loop-unroll.c:370^M
0x473d8f unroll_and_peel_loops(int)^M
../../gcc-4.9-20140209/gcc/loop-unroll.c:275^M
0x465e33 rtl_unroll_and_peel_loops^M
../../gcc-4.9-20140209/gcc/loop-init.c:598^M
0x465e33 execute^M
../../gcc-4.9-20140209/gcc/loop-init.c:629^M
Please submit a full bug report,^M
with preprocessed source if appropriate.^M
Please include the complete backtrace with any bug report.^M
See http://gcc.gnu.org/bugs.html for instructions.^M

cat LAST_UPDATED 
Obtained from SVN: trunk revision 207646


[Bug target/43546] [4.7/4.8/4.9 Regression] ICE: in assign_stack_local_1, at function.c:353 with -mpreferred-stack-boundary=2 -msseregparm

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43546

--- Comment #16 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Thu Feb 13 13:20:06 2014
New Revision: 207757

URL: http://gcc.gnu.org/viewcvs?rev=207757root=gccview=rev
Log:
PR target/43546
* expr.c (compress_float_constant): If x is a hard register,
extend into a pseudo and then move to x.

* gcc.target/i386/pr43546.c: New test.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr43546.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/expr.c
trunk/gcc/testsuite/ChangeLog


[Bug target/43546] [4.7/4.8 Regression] ICE: in assign_stack_local_1, at function.c:353 with -mpreferred-stack-boundary=2 -msseregparm

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43546

Jakub Jelinek jakub 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] ICE:
   |ICE: in |in assign_stack_local_1, at
   |assign_stack_local_1, at|function.c:353 with
   |function.c:353 with |-mpreferred-stack-boundary=
   |-mpreferred-stack-boundary= |2 -msseregparm
   |2 -msseregparm  |
  Known to fail||4.8.2

--- Comment #17 from Jakub Jelinek jakub at gcc dot gnu.org ---
Fixed on the trunk so far.


[Bug ada/60174] ICE on ACATS cc3305a

2014-02-13 Thread mikpelinux at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

Mikael Pettersson mikpelinux at gmail dot com changed:

   What|Removed |Added

 CC||mikpelinux at gmail dot com

--- Comment #2 from Mikael Pettersson mikpelinux at gmail dot com ---
I got the exact same error on armv5tel-linux-gnueabi with 4.9-20140209 aka
r207646.  The previous weekly snapshot, 4.9-20140202 aka r207409, was Ok.


[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread vincent-gcc at vinc17 dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #14 from Vincent Lefèvre vincent-gcc at vinc17 dot net ---
(In reply to Marc Glisse from comment #9)
 The definition of a function changes with inlining ;-)

It shouldn't: what happens at run time isn't changed by inlining.

 f(i) is considered as an initialization of i. This heuristic is necessary,
 otherwise the number of false positives would make the warning useless.

Perhaps, but this isn't documented.

 I don't know why you think warnings should be so well defined.

According to the gcc man page, it is well-defined: the rule is given
explicitly.

(In reply to Jakub Jelinek from comment #12)
 In your testcase, if fn1 isn't inlined, it is the same thing for GCC, a
 function call as a black box which could do anything to the memory pointed
 to by the escaped pointer (unless the function is say pure or const, at
 which point it couldn't store to it).

Here you assume that the function can do anything, while Marc said that GCC
assumes that i is initialized. There's a contradiction.

Moreover in the case of MPFR, the called function is in the same preprocessed
source file, so that it is not obvious for the user that GCC will see it as a
black box (when not inlined).

[Bug bootstrap/59878] [4.9 Regression] ISL from cloog does not work with trunk

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59878

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Thu Feb 13 13:35:10 2014
New Revision: 207758

URL: http://gcc.gnu.org/viewcvs?rev=207758root=gccview=rev
Log:
2014-02-13  Richard Biener  rguent...@suse.de

PR bootstrap/59878
* doc/install.texi (ISL): Update recommended version to 0.12.2,
mention the possibility of an in-tree build.
(CLooG): Update recommended version to 0.18.1, mention the
possibility of an in-tree build and clarify that the ISL
bundled with CLooG does not work.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/doc/install.texi


[Bug bootstrap/59878] [4.9 Regression] ISL from cloog does not work with trunk

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59878

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||grosser at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #6 from Richard Biener rguenth at gcc dot gnu.org ---
Fixed.  (or invalid, just depends how you interpret it ;))

- make the cloog folks have the bundled ISL produce a sensible isl_version ()
output would be a better fix, of course ;)

Tobias?  (not sure, maybe cloog 0.18.1 is fixed in this regard, 0.18.0
definitely wasn't)


[Bug tree-optimization/60165] may be used uninitialized warning with -O3 but not with -O2

2014-02-13 Thread vincent-gcc at vinc17 dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60165

--- Comment #15 from Vincent Lefèvre vincent-gcc at vinc17 dot net ---
(In reply to Manuel López-Ibáñez from comment #10)
 Now, I agree that ideally, GCC should warn for your last testcase. But I
 guess in that case inlining either doesn't happen or it happens too late, so
 GCC only sees the first case. The analysis that GCC performs are predicated
 on the transformations leading to better code, otherwise they are not
 performed. A tool for static analysis will surely inline as much as it
 could, not matter if the code is slower or larger, but this is not how GCC
 works because GCC is not a tool for static analysis.

Well, detecting uninitialized variables is equivalent to generating better
code. See the following functions. If you want to be able to remove the i == 0
test in the first one (making generated code better), you'll solve the warning
problem in the second one.

int f(void)
{
  int i = 0;
  /* some code that sets i to a nonzero value, but difficult to prove */
  if (i == 0)
abort();
  return i;
}

int f(void)
{
  int i;
  /* some code that sets i to a nonzero value, but difficult to prove */
  return i;
}

[Bug ada/60174] ICE on ACATS cc3305a

2014-02-13 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

--- Comment #3 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
(In reply to Richard Biener from comment #1)
 Can you check from the -fdump-tree-all dumps where i_34(ab) and i_399(ab)
 start to have overlapping life-ranges?

OK, i used grep 'i_\(34\|399\)(ab)' cc3305a.adb.*

i_399(ab) is first mentioned in cc3305a.adb.078t.dom1:

cc3305a.adb.078t.dom1:i_399(ab) - { i_36(ab) }
cc3305a.adb.078t.dom1:  # i_34(ab) = PHI i_168(D)(ab)(2), i_168(D)(ab)(3),
i_168(D)(ab)(4), i_398(ab)(8), i_398(ab)(9), i_398(ab)(11), i_398(ab)(12),
i_398(ab)(13), i_35(ab)(14), i_35(ab)(15), i_35(ab)(16), i_35(ab)(17),
i_208(ab)(20), i_208(ab)(21), i_208(ab)(22), i_399(ab)(25), i_399(ab)(26),
i_399(ab)(28), i_399(ab)(30), i_399(ab)(31), i_36(ab)(32), i_36(ab)(34),
i_36(ab)(36), i_36(ab)(38), i_400(ab)(39), i_37(ab)(41), i_37(ab)(42),
i_37(ab)(43), i_38(ab)(46), i_38(ab)(47), i_38(ab)(48), i_401(ab)(51),
i_401(ab)(52), i_401(ab)(54), i_401(ab)(56), i_401(ab)(57), i_39(ab)(58),
i_39(ab)(60), i_43(ab)(90), i_402(ab)(61), i_40(ab)(63), i_40(ab)(64),
i_40(ab)(65), i_41(ab)(68), i_41(ab)(69), i_41(ab)(70), i_403(ab)(73),
i_403(ab)(74), i_403(ab)(76), i_403(ab)(78), i_403(ab)(79), i_42(ab)(80),
i_42(ab)(82), i_42(ab)(84), i_42(ab)(86), i_404(ab)(87), i_43(ab)(89)
cc3305a.adb.078t.dom1:  # i_399(ab) = PHI i_36(ab)(24), i_333(93)
cc3305a.adb.078t.dom1:  _188 = i_399(ab) != 0;
cc3305a.adb.078t.dom1:  _189 = i_399(ab) != 4;
cc3305a.adb.078t.dom1:  # i_400(ab) = PHI i_399(ab)(29), i_36(ab)(37),
i_36(ab)(38), i_399(ab)(30)
cc3305a.adb.078t.dom1:  # i_305 = PHI i_34(ab)(5)
cc3305a.adb.078t.dom1:  # i_333 = PHI i_34(ab)(23)
cc3305a.adb.078t.dom1:  # i_350 = PHI i_34(ab)(49)
cc3305a.adb.078t.dom1:  # i_365 = PHI i_34(ab)(71)

is this already overlapping?


[Bug libstdc++/60176] New: [C++11] void return value in std::list::insert() c++1 should be an iterator

2014-02-13 Thread fasbjx at free dot fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60176

Bug ID: 60176
   Summary: [C++11] void return value in std::list::insert()
c++1 should be an iterator
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: fasbjx at free dot fr

Created attachment 32121
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32121action=edit
Test case

/usr/bin/g++-4.8 -std=c++11 --version
g++-4.8 (Debian 4.8.2-14) 4.8.2

/usr/bin/g++-4.8 -std=c++11 /tmp/insert_error.cpp 
/tmp/insert_error.cpp: In function ‘int main()’:
/tmp/insert_error.cpp:8:62: error: conversion from ‘void’ to non-scalar type
‘std::listint::iterator {aka std::_List_iteratorint}’ requested
  std::listint::iterator it = v2.insert( v2.end(), v1, v1+5 );

[Bug ada/60174] ICE on ACATS cc3305a

2014-02-13 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

--- Comment #4 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
Created attachment 32122
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32122action=edit
output from -fdump-tree-all


[Bug ada/60174] ICE on ACATS cc3305a

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||law at gcc dot gnu.org

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
Looks like so.  Can you attach -fdump-tree-dom1-details?


[Bug ada/60174] ICE on ACATS cc3305a

2014-02-13 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

--- Comment #6 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
Created attachment 32123
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32123action=edit
output from -fdump-tree-dom1-details

(In reply to Richard Biener from comment #5)
 Looks like so.  Can you attach -fdump-tree-dom1-details?

sure, here you are.


[Bug c++/60177] New: Unable to deduce template base of derived class in function template accepting a simple-template-id

2014-02-13 Thread filip.roseen at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60177

Bug ID: 60177
   Summary: Unable to deduce template base of derived class in
function template accepting a simple-template-id
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: filip.roseen at gmail dot com

templateclass struct Base { };

struct Derived : Basevoid { };

templatetemplatetypename class TT, typename T
void func (TTT) { }

int main () {
  func (Derived { });
}


- - - - - - - - - - - - - - - - - - - - - - - - - -

main.cpp: In function 'int main()':
main.cpp:9:20: error: no matching function for call to 'func(Derived)'
   func (Derived { });
^
main.cpp:9:20: note: candidate is:
main.cpp:6:6: note: templatetemplateclass class TT, class T void
func(TTT)
 void func (TTT) { }
  ^
main.cpp:6:6: note:   template argument deduction/substitution failed:
main.cpp:9:20: note:   can't deduce a template for 'TTT' from non-template
type 'Derived'
   func (Derived { });

- - - - - - - - - - - - - - - - - - - - - - - - - -

gcc rejects the snippet which is a violation of [temp.deduct.call]/4 (`clang`
and `msvc` accepts the code).

`TTT` is a `simple-template-id` and the standard says that if a derived type
is passed to such context it should be deduced to a suitable base of that
passed type. 

Correct behavior is that the deduced template parameters for `func (Derived
{})` should be `TT = Base, T = void`.


[Bug ada/60174] ICE on ACATS cc3305a

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org ---
Ok, I believe this is caused by some jump-threading threading over a copy of
an SSA name used in abnormal context.  You can try verifying if
-fno-tree-dominator-opts fixes this (maybe you also need -fno-tree-vrp, not
sure)


[Bug ada/60174] ICE on ACATS cc3305a

2014-02-13 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

--- Comment #8 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
(In reply to Richard Biener from comment #7)
 Ok, I believe this is caused by some jump-threading threading over a copy of
 an SSA name used in abnormal context.  You can try verifying if
 -fno-tree-dominator-opts fixes this (maybe you also need -fno-tree-vrp, not
 sure)

Yes, if I add -fno-tree-dominator-opts (_before_ -largs) to the gnatmake
command line, the ICE is gone, and the test case PASSES.


[Bug c++/60178] New: std::mutex::try_lock failing

2014-02-13 Thread meme02 at eaku dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60178

Bug ID: 60178
   Summary: std::mutex::try_lock failing
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: meme02 at eaku dot net

Created attachment 32124
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32124action=edit
Output from g++ -save-temps command above.

Problem summary:

The very simple standard example code for std::mutex usage here:

http://en.cppreference.com/w/cpp/thread/shared_mutex/unlock

---
#include iostream
#include mutex

int main()
{
std::mutex test;
if (test.try_lock()) {
std::cout  first try_lock successful\n;
} else {
std::cout  first try_lock NOT successful\n;
return 0;
}

test.unlock();
test.lock();

if (test.try_lock()) {
std::cout  second try_lock successful\n;
} else {
std::cout  second try_lock NOT successful\n;
}

test.lock();  // trying to lock an already-locked std::mutex will
  // block program execution, so we'll hang here
}
---

... does not perform as it should. On my system:

---
[bash]$ rm -f test; /usr/local/bin/g++ -save-temps -Wall -Wextra -std=c++0x
test.cpp -o test; ./test
first try_lock successful
second try_lock successful
[bash]$ 
---

Obviously, the second try_lock should fail and the program should then hang,
but this does not occur.

I'm running the latest gcc stable tarball, 4.82, updated today, no flags given
at build time. I was previously using 4.62 and the problem was there too (I
upgraded to see if that would fix it). /proc/version says Linux version
2.6.18-194.el5PAE (mockbu...@x86-007.build.bos.redhat.com) (gcc version 4.1.2
20080704 (Red Hat 4.1.2-48)) #1 SMP Tue Mar 16 22:00:21 EDT 2010.


[Bug target/60179] New: [4.9 Regression] target optimization attribute streaming is broken

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60179

Bug ID: 60179
   Summary: [4.9 Regression] target optimization attribute
streaming is broken
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Keywords: lto
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rguenth at gcc dot gnu.org
Target: x86_64-*-*, i?86-*-*

Since somewhen recently the i386 target started to put pointers to strings in
struct cl_target_option (TargetSaves in i386.opt).  This breaks LTO streaming
of TS_TARGET_OPTION which streams the contents of cl_target_option
byte-for-byte.

For me this results in a LTO bootstrap comparison failure when comparing
stage2/libccp/lex.o and stage3/libcpp/lex.o.

And it obviously will make the backend crash if anybody would ever inspect
one of those streamed string pointers (well, or they'll point somewhere
random and not so useful).


[Bug target/60179] [4.9 Regression] target optimization attribute streaming is broken

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60179

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||tmsriram at google dot com

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
CCing offender.


[Bug target/60179] [4.9 Regression] target optimization attribute streaming is broken

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60179

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org
  Known to work||4.8.3
   Target Milestone|--- |4.9.0

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
i386 is the only port TargetSaveing strings, nios2 saves arrays (not sure how
they end up in cl_target_option).  rs6000 is saving ints.

It was suggested to change streaming to not stream TS_TARGET_OPTION but
re-generate them from the attributes (we stream those if they are present
and preserved).


[Bug target/60179] [4.9 Regression] target optimization attribute streaming is broken

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60179

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
Created attachment 32125
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32125action=edit
untested patch


[Bug target/60179] [4.9 Regression] target optimization attribute streaming is broken

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60179

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #32125|0   |1
is obsolete||

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
Created attachment 32126
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32126action=edit
non-working patch


[Bug target/60179] [4.9 Regression] target optimization attribute streaming is broken

2014-02-13 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60179

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-02-13
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
Created attachment 32127
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32127action=edit
patch


[Bug c++/60180] New: internal compiler error: in use_thunk, at cp/method.c:338

2014-02-13 Thread ignoreddropbox at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60180

Bug ID: 60180
   Summary: internal compiler error: in use_thunk, at
cp/method.c:338
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ignoreddropbox at gmail dot com

gcc (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7)

Building file: ../verification_tests.cpp
Invoking: GCC C++ Compiler
g++ -D__GXX_EXPERIMENTAL_CXX0X__ -I/home/eran/FakeIt/tests/../include -O0 -g3
-Wall -c -fmessage-length=0 -std=c++11 -MMD -MP -MFverification_tests.d
-MTverification_tests.d -o verification_tests.o ../verification_tests.cpp
In file included from /home/eran/FakeIt/tests/../include/fakeit/Mock.h:8:0,
 from /home/eran/FakeIt/tests/../include/fakeit.h:4,
 from ../verification_tests.cpp:7:
/home/eran/FakeIt/tests/../include/fakeit/StubbingImpl.h:38:10: internal
compiler error: in use_thunk, at cp/method.c:338
  virtual ~FunctionStubbingProgress() override = default;
  ^
Please submit a full bug report,
with preprocessed source if appropriate.
See http://bugzilla.redhat.com/bugzilla for instructions.
Preprocessed source stored into /tmp/ccqU9q2o.out file, please attach this to
your bugreport.
make: *** [verification_tests.o] Error 1


[Bug libffi/60073] [4.9 regression] 64-bit libffi.call/cls_double_va.c FAILs after recent modification

2014-02-13 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60073

--- Comment #9 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
Author: ebotcazou
Date: Thu Feb 13 16:18:13 2014
New Revision: 207763

URL: http://gcc.gnu.org/viewcvs?rev=207763root=gccview=rev
Log:
PR libffi/60073
* src/sparc/ffitarget.h (FFI_TARGET_SPECIFIC_VARIADIC): Define.
(FFI_EXTRA_CIF_FIELDS): Likewise.
(FFI_NATIVE_RAW_API): Move around.
* src/sparc/ffi.c (ffi_prep_cif_machdep_core): New function from...
(ffi_prep_cif_machdep): ...here.  Call ffi_prep_cif_machdep_core.
(ffi_prep_cif_machdep_var): New function.
(ffi_closure_sparc_inner_v9): Do not pass anonymous FP arguments in
FP registers.
* doc/libffi.texi (Introduction): Fix inaccuracy.

Modified:
trunk/libffi/ChangeLog
trunk/libffi/doc/libffi.texi
trunk/libffi/src/sparc/ffi.c
trunk/libffi/src/sparc/ffitarget.h


[Bug target/60181] New: constant folding of complex number incorrect

2014-02-13 Thread krebbel at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60181

Bug ID: 60181
   Summary: constant folding of complex number incorrect
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: krebbel at gcc dot gnu.org

The following testcase fails on s390x and Power.  Constant folding and runtime
execution of a division of complex numbers produce different results.

The testcase works fine on x86 so it looks like S/390 and Power do something
different here.

It looks somewhat like:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30789

#include complex.h
#include stdio.h
#include stdlib.h

_Complex float __attribute__ ((noinline))
calc (_Complex float a, _Complex float b)
{
  return a / b;
}

int
main (int argc, char **argv)
{
  _Complex float a = calc (10 + 6 * I, 5 + 12 * I);
  _Complex float b = (10 + 6 * I) / (5 + 12 * I);

  printf (%ap + %ap * i\n, creal (a), cimag (a));
  printf (%ap + %ap * i\n, creal (b), cimag (b));

  if (a != b)
abort ();

  return 0;
}

gcc -O0 t.c -o f

./f
0x1.719c08p-1p + -0x1.10a9a8p-1p * i
0x1.719c06p-1p + -0x1.10a9a8p-1p * i
Aborted


[Bug libffi/60073] [4.9 regression] 64-bit libffi.call/cls_double_va.c FAILs after recent modification

2014-02-13 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60073

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #10 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
Thanks for reporting the problem.


[Bug c++/60180] internal compiler error: in use_thunk, at cp/method.c:338

2014-02-13 Thread ignoreddropbox at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60180

--- Comment #1 from EP ignoreddropbox at gmail dot com ---
Created attachment 32128
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32128action=edit
dump created by gcc


[Bug tree-optimization/60174] [4.9 regression] ICE on ACATS cc3305a

2014-02-13 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-02-13
  Component|ada |tree-optimization
 CC||ebotcazou at gcc dot gnu.org
   Assignee|law at redhat dot com  |unassigned at gcc dot 
gnu.org
 Ever confirmed|0   |1
Summary|ICE on ACATS cc3305a|[4.9 regression] ICE on
   ||ACATS cc3305a
   Target Milestone|--- |4.9.0

--- Comment #9 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
Probably a missing SSA_NAME_OCCURS_IN_ABNORMAL_PHI check somewhere.


[Bug tree-optimization/60174] [4.9 regression] ICE on ACATS cc3305a

2014-02-13 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

--- Comment #10 from Jeffrey A. Law law at redhat dot com ---
That was my thought as well.  I've got some unexpected family stuff to deal
with over the next couple days, but I don't see any reason why this can't be
nailed down early next week.


[Bug tree-optimization/60174] [4.9 regression] ICE on ACATS cc3305a

2014-02-13 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60174

--- Comment #11 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
Reproducible on x86{-64}/Linux with the following procedure:

 - copy $srcdir/gcc/testsuite/ada/acats/support/repbody.ada to $buildir
 - gnatchop repbody.ada
 - copy $srcdir/gcc/testsuite/ada/acats/support/repspec.ada to $buildir
 - gnatchop repspec.ada
 - copy $builddir/gcc/ada/rts/system.ads to $buildir
 - edit system.ads and change ZCX_By_Default to False
 - compile

eric@polaris:~/build/gcc/native gcc/xgcc -Bgcc -S cc3305a.adb -O2

Unable to coalesce ssa_names 34 and 399 which are marked as MUST COALESCE.
i_34(ab) and  i_399(ab)
+===GNAT BUG DETECTED==+
| 4.9.0 20140213 (experimental) [trunk revision 207749] (x86_64-suse-linux) GCC
error:|
| SSA corruption   |
| Error detected around cc3305a.adb:35:1   |
| Please submit a bug report; see http://gcc.gnu.org/bugs.html.|
| Use a subject line meaningful to you and us to track the bug.|
| Include the entire contents of this bug box in the report.   |
| Include the exact gcc or gnatmake command that you entered.  |
| Also include sources listed below in gnatchop format |
| (concatenated together with no headers between files).   |
+==+


[Bug c++/60182] New: g++ segfault within template expansion using using aliasing

2014-02-13 Thread xgue...@tower-research.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60182

Bug ID: 60182
   Summary: g++ segfault within template expansion using using
aliasing
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: xgue...@tower-research.com

Created attachment 32129
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32129action=edit
Code producing the issue

G++ segfault while passing a class member that has been declared using a
using alias to a templates function that uses templated type reduction.

[g++48 -std=c++11 -o test test.cpp]
test.cpp: In constructor ‘A::A(const string)’:
test.cpp:28:25: internal compiler error: Segmentation fault
   doSomething(m_elements);
0x90661f crash_signal
../../gcc-4.8.2/gcc/toplev.c:332
0x58bedc unify
../../gcc-4.8.2/gcc/cp/pt.c:16580
0x58e9e1 unify_one_argument
../../gcc-4.8.2/gcc/cp/pt.c:15470
0x588dca type_unification_real
../../gcc-4.8.2/gcc/cp/pt.c:15542
0x58faf9 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node*
const*, unsigned int, tree_node*, unification_kind_t, int, bool)
../../gcc-4.8.2/gcc/cp/pt.c:15124
0x5516b1 add_template_candidate_real
../../gcc-4.8.2/gcc/cp/call.c:2925
0x54f0a1 add_template_candidate
../../gcc-4.8.2/gcc/cp/call.c:3022
0x54f0a1 add_candidates
../../gcc-4.8.2/gcc/cp/call.c:5023
0x5537fd perform_overload_resolution
../../gcc-4.8.2/gcc/cp/call.c:3817
0x55727a build_new_function_call(tree_node*, vectree_node*, va_gc,
vl_embed**, bool, int)
../../gcc-4.8.2/gcc/cp/call.c:3894
0x606911 finish_call_expr(tree_node*, vectree_node*, va_gc, vl_embed**, bool,
bool, int)
../../gcc-4.8.2/gcc/cp/semantics.c:2231
0x5c4d5a cp_parser_postfix_expression
../../gcc-4.8.2/gcc/cp/parser.c:5862
0x5c6edd cp_parser_unary_expression
../../gcc-4.8.2/gcc/cp/parser.c:6736
0x5c7a0f cp_parser_binary_expression
../../gcc-4.8.2/gcc/cp/parser.c:7428
0x5c7ebf cp_parser_assignment_expression
../../gcc-4.8.2/gcc/cp/parser.c:7664
0x5c9ab3 cp_parser_expression
../../gcc-4.8.2/gcc/cp/parser.c:7826
0x5ca21c cp_parser_expression
../../gcc-4.8.2/gcc/cp/parser.c:7865
0x5ca21c cp_parser_expression_statement
../../gcc-4.8.2/gcc/cp/parser.c:9127
0x5c13c7 cp_parser_statement
../../gcc-4.8.2/gcc/cp/parser.c:8979
0x5c259e cp_parser_statement_seq_opt
../../gcc-4.8.2/gcc/cp/parser.c:9245
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 tree-optimization/60183] New: [4.7/4.8/4.9 Regression] phiprop creates invalid code

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60183

Bug ID: 60183
   Summary: [4.7/4.8/4.9 Regression] phiprop creates invalid code
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jakub at gcc dot gnu.org

On:

unsigned long c[32] = { 1 };

static void
foo (unsigned long *x, unsigned long *y)
{
  int i;
  unsigned long w = x[0];
  for (i = 0; i  8; i++)
{
  w ^= *y++;
  w += *y++;
  w ^= *y++;
  w += *y++;
}
  x[1] = w;
}

__attribute__((noinline, noclone)) void
bar (unsigned long *x)
{
  foo (x, c);
}

int
main ()
{
  unsigned long a[2] = { 0, -1UL };
  asm volatile ( : : r (c) : memory);
  c[0] = 0;
  bar (a);
  if (a[1] != 0)
__builtin_abort ();
  return 0;
}

at -O1 or higher phiprop causes invalid code to be generated, where the loop
body reads the next *y value into a SSA_NAME and in loop preheader it reads
c[0] into a SSA_NAME which is then used in a PHI on the loop header and the
result of the PHI is used instead of the first *y read.  In this particular
case, I don't even see any advantages of doing that, but more importantly it
can read one past the end of the array.  With -O{1,2,3} -fsanitize=address
this fails loudly, otherwise if you are unlucky enough and the variable is at
the end of some mmapped area, you could get a crash as well.


[Bug rtl-optimization/60141] ICE in i386.c distance_non_agu_define_in_bb

2014-02-13 Thread tejohnson at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60141

--- Comment #1 from Teresa Johnson tejohnson at google dot com ---
This appears to have been exposed, not caused, by the change to the
pass ordering. It is in fact a duplicate of PR middle-end/43631, which
was fixed on trunk by r197994 on 4/15/13. I will backport the fix to
google-4_8.

Teresa

On Mon, Feb 10, 2014 at 4:49 PM, shenhan at google dot com
gcc-bugzi...@gcc.gnu.org wrote:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60141

 Bug ID: 60141
Summary: ICE in i386.c distance_non_agu_define_in_bb
Product: gcc
Version: 4.8.3
 Status: UNCONFIRMED
   Severity: normal
   Priority: P3
  Component: rtl-optimization
   Assignee: unassigned at gcc dot gnu.org
   Reporter: shenhan at google dot com
 CC: llozano at google dot com, tejohnson at google dot com

 This only fails for google/gcc-4_8

 To reproduce -
   configure:
  ~/gcc.git/configure --disable-bootstrap --enable-languages='c,c++'
 --disable-multilib --disable-libatomic --disable-libmudflap
 --disable-libssp --enable-libgomp --enable-__cxa_atexit
 --enable-checking=release --disable-libquadmath --disable-libitm
 --enable-esp --with-arch=atom --with-tune=atom --enable-frame-pointer
   Build -
  make -j40
   Compile a testcase -
./gcc/xgcc -B./gcc -g -O2 -fpic -c -m32 ~/SROA.pp.cpp
   Output -
SROA.cpp: In member function ‘void
 {anonymous}::AllocaPartitioning::UseBuilder::operator()()’:
 SROA.cpp:873:3: internal compiler error: Segmentation fault
 0x8d0baf crash_signal
 ../../../gcc.git/gcc/toplev.c:346
 0xa798c8 distance_non_agu_define_in_bb
 ../../../gcc.git/gcc/config/i386/i386.c:17506
 0xa79cad distance_non_agu_define
 ../../../gcc.git/gcc/config/i386/i386.c:17564
 0xa79cad ix86_lea_outperforms
 ../../../gcc.git/gcc/config/i386/i386.c:17730
 0xb8e6ca output_89
 ../../../gcc.git/gcc/config/i386/i386.md:2152
 0x72a5c3 final_scan_insn(rtx_def*, _IO_FILE*, int, int, int*)
 ../../../gcc.git/gcc/final.c:2895
 0x72ae84 final(rtx_def*, _IO_FILE*, int)
 ../../../gcc.git/gcc/final.c:1986
 0x72b46d rest_of_handle_final
 ../../../gcc.git/gcc/final.c:4432
 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.

 Debugging shows that in distance_non_agu_define_in_bb (i386.c),
 BLOCK_FOR_INSN(start) returns zero, which caused this ICE.

 A preliminary bisecting in google/gcc-4_8 shows that the follow CL introduces
 this ICE. (So I cc'ed Teresa Johnson)


 commit 907fca49eae2da51a328eb192c691cc24f69e6af
 Author: tejohnson tejohnson@138bc75d-0d04-0410-961f-82ee72b054a4
 Date:   Mon Dec 2 18:28:19 2013 +

 Backport the last few fixes for -freorder-blocks-and-partition from
 trunk to google/4_8: r204985, r205057 and r205243

 
 r204985 | tejohnson | 2013-11-18 14:38:51 -0800 (Mon, 18 Nov 2013) | 
 15
 lines

 This patch fixes an lto profiledbootstrap failure with
 -freorder-blocks-and-partition enabled. Currently compgotos
 is the only pass that goes into cfglayout mode after bb reordering,
 which is undesireable (and in the case of
 -freorder-blocks-and-partition
 can cause illegal partitioning) because of the optimizations performed
 on the cfg when going into cfglayout mode. Moved compgoto before
 bb reordering to avoid these problems.

 2013-11-18  Teresa Johnson  tejohn...@google.com

 * gcc/cfgrtl.c (cfg_layout_initialize): Assert if we
 try to go into cfglayout after bb reordering.
 * gcc/passes.def: Move compgotos before bb reordering
 since it goes into cfglayout.

 
 
 r205057 | tmsriram | 2013-11-19 14:12:21 -0800 (Tue, 19 Nov 2013) | 7
 lines

 Emit a label for the split cold function part.  Label name is formed 
 by
 suffixing the original function name with cold.

 Patch tested for bootstrap on all default languages on x86_64 and
 regression testsuite checked for parity with RUNTESTFLAGS -m32 and 
 m64.

 2013-11-19  Sriraman Tallam  tmsri...@google.com

 * final.c (final_scan_insn): Emit a label for the split
 cold function part.  Label name is formed by suffixing
 the original function name with cold.

 2013-11-19  Sriraman Tallam  tmsri...@google.com

 * gcc.dg/tree-prof/cold_partition_label.c: New testcase.

 
 

[Bug libstdc++/60176] [C++11] void return value in std::list::insert() c++1 should be an iterator

2014-02-13 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60176

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Our std::list needs work to conform to C++11


[Bug libstdc++/60178] std::mutex::try_lock failing

2014-02-13 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60178

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Component|c++ |libstdc++
 Resolution|--- |WORKSFORME

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
You need to use -pthread

The program has undefined behaviour anyway due to locking the same mutex twice
in a single thread.


[Bug target/57936] ICE in rs6000_secondary_reload_inner:15144, type = load

2014-02-13 Thread orion at cora dot nwra.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57936

Orion Poplawski orion at cora dot nwra.com changed:

   What|Removed |Added

 CC||orion at cora dot nwra.com

--- Comment #4 from Orion Poplawski orion at cora dot nwra.com ---
Created attachment 32130
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32130action=edit
ccf2q412.out.gz

I think I may be encountering the same or similar while compiling the eigen3
test cases.  This is on RHEL7 ppc64 with gcc-4.8.2-3.el7.

[ 13%] Building CXX object
test/CMakeFiles/product_extra_3.dir/product_extra.cpp.o
cd /builddir/build/BUILD/eigen-eigen-ffa86ffb5570/ppc64-redhat-linux-gnu/test
 /usr/bin/c++   -DEIGEN_CHOLMOD_SUPPORT -DEIGEN_SPQR_SUPPORT
-DEIGEN_SUPERLU_SUPPORT -DEIGEN_UMFPACK_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB
-DQT_NO_DEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64
-mcpu=power7 -mtune=power7  -fexceptions -pedantic -Wall -Wextra -Wundef
-Wcast-align -Wchar-subscripts -Wnon-virtual-dtor -Wunused-local-typedefs
-Wpointer-arith -Wwrite-strings -Wformat-security -Wno-psabi
-Wno-variadic-macros -Wno-long-long -fno-check-new -fno-common
-fstrict-aliasing -ansi  -g2 -g0 -O2  -fno-inline-functions
-I/builddir/build/BUILD/eigen-eigen-ffa86ffb5570/ppc64-redhat-linux-gnu/test
-I/builddir/build/BUILD/eigen-eigen-ffa86ffb5570/test
-I/builddir/build/BUILD/eigen-eigen-ffa86ffb5570
-I/builddir/build/BUILD/eigen-eigen-ffa86ffb5570/ppc64-redhat-linux-gnu
-I/usr/include/suitesparse -I/usr/include/SuperLU -isystem /usr/include/QtGui
-isystem /usr/include/QtCore -DEIGEN_TEST_MAX_SIZE=320
-DEIGEN_TEST_FUNC=product_extra  -DEIGEN_TEST_PART_3=1 -o
CMakeFiles/product_extra_3.dir/product_extra.cpp.o -c
/builddir/build/BUILD/eigen-eigen-ffa86ffb5570/test/product_extra.cpp
rs6000_secondary_reload_inner:15249, type = load
(parallel [
(set (reg:V4SI 77 0)
(reg:V4SI 32 0))
(clobber (reg:DI 3 3))
])
/builddir/build/BUILD/eigen-eigen-ffa86ffb5570/test/product_extra.cpp: In
function 'void product_extra(const MatrixType) [with MatrixType =
Eigen::Matrixstd::complexfloat, -1, -1]':
/builddir/build/BUILD/eigen-eigen-ffa86ffb5570/test/product_extra.cpp:101:1:
internal compiler error: in rs6000_secondary_reload_fail, at
config/rs6000/rs6000.c:15222
 }
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See http://bugzilla.redhat.com/bugzilla for instructions.
Preprocessed source stored into /tmp/ccf2q412.out file, please attach this to
your bugreport.


[Bug rtl-optimization/60141] ICE in i386.c distance_non_agu_define_in_bb

2014-02-13 Thread shenhanc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60141

Han Shen shenhanc at gmail dot com changed:

   What|Removed |Added

 CC||shenhanc at gmail dot com

--- Comment #2 from Han Shen shenhanc at gmail dot com ---
Thanks, Teresa!


[Bug c++/60182] g++ segfault within template expansion using using aliasing

2014-02-13 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60182

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-02-13
 CC||trippels at gcc dot gnu.org
   Target Milestone|--- |4.9.0
 Ever confirmed|0   |1
  Known to fail||4.7.3, 4.8.3, 4.9.0
   Severity|major   |normal

--- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
class B {};
template typename using __allocator_base = B;
template typename class F : __allocator_baseint {};
class C {};
template typename, typename = Fint  class G : C {};
template typename class D;
class A {
  using Container = GDchar;
  A();
  A(Dchar const );
  Container m_elements;
};
template template class, class class C, class A = FDint
void doSomething(CDchar, A );
A::A(Dchar const ) : A() { doSomething(m_elements); }


[Bug target/60181] constant folding of complex number incorrect

2014-02-13 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60181

--- Comment #1 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
There are no specified accuracy requirements for complex multiplication / 
division, even under Annex G (parts of which - imaginary types in 
particular - are not implemented in GCC at present), beyond certain 
requirements for special cases and avoiding certain cases of overflow from 
the simplest formulas.  Constant folding is correctly rounding, runtime 
complex multiplication / division isn't (and given complaints about 
slowness at present, I don't think users would want it to be even slower, 
though there may well be a case for defining a standard library interface 
for correctly rounding complex multiplication / division).

x86 probably benefits from excess precision being used implicitly by GCC 
when compiling the implementations of complex multiplication and division.


[Bug tree-optimization/60183] [4.7/4.8/4.9 Regression] phiprop creates invalid code

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60183

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.7.4


[Bug c++/60184] New: g++ does not allow static members of named unions

2014-02-13 Thread d0sboots at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60184

Bug ID: 60184
   Summary: g++ does not allow static members of named unions
   Product: gcc
   Version: 4.6.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: d0sboots at gmail dot com

cat  test.cc EOF
union Test {
  static constexpr int kConstant = 10;
};
EOF
g++ --std=c++0x -c -o test.o test.cc

produces:
test.cc:2:36: error: 'Test::kConstant' may not be static because it is a member
of a union

However, this is correct according to my reading of the standard, as well as
the folks here:
http://stackoverflow.com/questions/15996333/does-c11-allow-non-anonymous-unions-to-contain-static-data-members
It is also allowed by clang.

9/5 : A union is a class defined with the class-key union; it holds only one
data member at a time

Section 9.4, in general, describes static members. It places no restrictions on
static members in union-type classes.

9.5/1: In a union, at most one of the non-static data members can be active at
any time, that is, the value of at most one of the non-static data members can
be stored in a union at any time.
There is no reason to specifically call out non-static data members unless
static data members can exist.

9.5/5: The member-specification of an anonymous union shall only define
non-static data members.
This only applies to anonymous unions. That this is specifically called out for
anonymous unions implies that it *is* allowed in general.

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

[Bug middle-end/43631] var-tracking inserts notes with non-NULL BLOCK_FOR_INSN in between basic blocks

2014-02-13 Thread tejohnson at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43631

--- Comment #26 from tejohnson at gcc dot gnu.org ---
Author: tejohnson
Date: Thu Feb 13 21:15:06 2014
New Revision: 207766

URL: http://gcc.gnu.org/viewcvs?rev=207766root=gccview=rev
Log:
2014-02-13  Teresa Johnson  tejohn...@google.com

For Google b/12971524, backport r197994 to fix PR60141.

2013-04-16  Steven Bosscher  ste...@gcc.gnu.org

PR middle-end/43631
* emit-rtl.c (make_note_raw): New function.
(link_insn_into_chain): New static inline function.
(add_insn): Use it.
(add_insn_before, add_insn_after): Factor insn chain linking code...
(add_insn_before_nobb, add_insn_after_nobb): ...here, new functions
using link_insn_into_chain.
(note_outside_basic_block_p): New helper function for emit_note_after
and emit_note_before.
(emit_note_after): Use nobb variant of add_insn_after if the note
should not be contained in a basic block.
(emit_note_before): Use nobb variant of add_insn_before if the note
should not be contained in a basic block.
(emit_note_copy): Use make_note_raw.
(emit_note): Likewise.
* bb-reorder.c (insert_section_boundary_note): Remove hack to set
BLOCK_FOR_INSN to NULL manually for NOTE_INSN_SWITCH_TEXT_SECTIONS.
* jump.c (cleanup_barriers): Use reorder_insns_nobb to avoid making
the moved barrier the tail of the basic block it follows.
* var-tracking.c (pass_variable_tracking): Add TODO_verify_flow.

Modified:
branches/google/gcc-4_8/gcc/bb-reorder.c
branches/google/gcc-4_8/gcc/emit-rtl.c
branches/google/gcc-4_8/gcc/jump.c
branches/google/gcc-4_8/gcc/var-tracking.c


[Bug rtl-optimization/60141] ICE in i386.c distance_non_agu_define_in_bb

2014-02-13 Thread tejohnson at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60141

--- Comment #3 from Teresa Johnson tejohnson at google dot com ---
On Thu, Feb 13, 2014 at 9:22 AM, Teresa Johnson tejohn...@google.com wrote:
 This appears to have been exposed, not caused, by the change to the
 pass ordering. It is in fact a duplicate of PR middle-end/43631, which
 was fixed on trunk by r197994 on 4/15/13. I will backport the fix to
 google-4_8.

Backported fix as r207766:

2014-02-13  Teresa Johnson  tejohn...@google.com

For Google b/12971524, backport r197994 to fix PR60141.

2013-04-16  Steven Bosscher  ste...@gcc.gnu.org

PR middle-end/43631
* emit-rtl.c (make_note_raw): New function.
(link_insn_into_chain): New static inline function.
(add_insn): Use it.
(add_insn_before, add_insn_after): Factor insn chain linking code...
(add_insn_before_nobb, add_insn_after_nobb): ...here, new functions
using link_insn_into_chain.
(note_outside_basic_block_p): New helper function for emit_note_after
and emit_note_before.
(emit_note_after): Use nobb variant of add_insn_after if the note
should not be contained in a basic block.
(emit_note_before): Use nobb variant of add_insn_before if the note
should not be contained in a basic block.
(emit_note_copy): Use make_note_raw.
(emit_note): Likewise.
* bb-reorder.c (insert_section_boundary_note): Remove hack to set
BLOCK_FOR_INSN to NULL manually for NOTE_INSN_SWITCH_TEXT_SECTIONS.
* jump.c (cleanup_barriers): Use reorder_insns_nobb to avoid making
the moved barrier the tail of the basic block it follows.
* var-tracking.c (pass_variable_tracking): Add TODO_verify_flow.


Teresa


 Teresa

 On Mon, Feb 10, 2014 at 4:49 PM, shenhan at google dot com
 gcc-bugzi...@gcc.gnu.org wrote:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60141

 Bug ID: 60141
Summary: ICE in i386.c distance_non_agu_define_in_bb
Product: gcc
Version: 4.8.3
 Status: UNCONFIRMED
   Severity: normal
   Priority: P3
  Component: rtl-optimization
   Assignee: unassigned at gcc dot gnu.org
   Reporter: shenhan at google dot com
 CC: llozano at google dot com, tejohnson at google dot com

 This only fails for google/gcc-4_8

 To reproduce -
   configure:
  ~/gcc.git/configure --disable-bootstrap --enable-languages='c,c++'
 --disable-multilib --disable-libatomic --disable-libmudflap
 --disable-libssp --enable-libgomp --enable-__cxa_atexit
 --enable-checking=release --disable-libquadmath --disable-libitm
 --enable-esp --with-arch=atom --with-tune=atom --enable-frame-pointer
   Build -
  make -j40
   Compile a testcase -
./gcc/xgcc -B./gcc -g -O2 -fpic -c -m32 ~/SROA.pp.cpp
   Output -
SROA.cpp: In member function ‘void
 {anonymous}::AllocaPartitioning::UseBuilder::operator()()’:
 SROA.cpp:873:3: internal compiler error: Segmentation fault
 0x8d0baf crash_signal
 ../../../gcc.git/gcc/toplev.c:346
 0xa798c8 distance_non_agu_define_in_bb
 ../../../gcc.git/gcc/config/i386/i386.c:17506
 0xa79cad distance_non_agu_define
 ../../../gcc.git/gcc/config/i386/i386.c:17564
 0xa79cad ix86_lea_outperforms
 ../../../gcc.git/gcc/config/i386/i386.c:17730
 0xb8e6ca output_89
 ../../../gcc.git/gcc/config/i386/i386.md:2152
 0x72a5c3 final_scan_insn(rtx_def*, _IO_FILE*, int, int, int*)
 ../../../gcc.git/gcc/final.c:2895
 0x72ae84 final(rtx_def*, _IO_FILE*, int)
 ../../../gcc.git/gcc/final.c:1986
 0x72b46d rest_of_handle_final
 ../../../gcc.git/gcc/final.c:4432
 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.

 Debugging shows that in distance_non_agu_define_in_bb (i386.c),
 BLOCK_FOR_INSN(start) returns zero, which caused this ICE.

 A preliminary bisecting in google/gcc-4_8 shows that the follow CL introduces
 this ICE. (So I cc'ed Teresa Johnson)


 commit 907fca49eae2da51a328eb192c691cc24f69e6af
 Author: tejohnson tejohnson@138bc75d-0d04-0410-961f-82ee72b054a4
 Date:   Mon Dec 2 18:28:19 2013 +

 Backport the last few fixes for -freorder-blocks-and-partition from
 trunk to google/4_8: r204985, r205057 and r205243

 
 r204985 | tejohnson | 2013-11-18 14:38:51 -0800 (Mon, 18 Nov 2013) | 
 15
 lines

 This patch fixes an lto profiledbootstrap failure with
 -freorder-blocks-and-partition enabled. Currently compgotos
 is the only pass that goes into cfglayout mode after bb reordering,
 which is undesireable (and in the case of
 -freorder-blocks-and-partition
 can cause illegal partitioning) because of the optimizations 
 

[Bug c++/60185] [4.9 Regression] ICE with invalid default parameter

2014-02-13 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60185

Volker Reichelt reichelt at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-invalid-code
  Known to work||4.7.0, 4.8.0
   Target Milestone|--- |4.9.0
  Known to fail||4.9.0


[Bug c++/60185] New: [4.9 Regression] ICE with invalid default parameter

2014-02-13 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60185

Bug ID: 60185
   Summary: [4.9 Regression] ICE with invalid default parameter
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid code snippet triggers an ICE on trunk:


templateint struct A
{
  int i;
  A() { void foo(int=i); }
};

A0 a;


bug.cc: In instantiation of 'Aanonymous ::A() [with int anonymous = 0]':
bug.cc:7:6:   required from here
bug.cc:4:14: internal compiler error: in tsubst_copy, at cp/pt.c:12375
   A() { void foo(int=i); }
  ^
0x62bfa5 tsubst_copy
../../gcc/gcc/cp/pt.c:12375
0x60687b tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/gcc/cp/pt.c:14974
0x607dcb tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/gcc/cp/pt.c:14035
0x60895b tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/gcc/cp/pt.c:14018
0x608054 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/gcc/cp/pt.c:14764
0x6115c6 tsubst_expr
../../gcc/gcc/cp/pt.c:13812
0x61862c tsubst_default_argument(tree_node*, tree_node*, tree_node*, int)
../../gcc/gcc/cp/pt.c:10094
0x631760 tsubst_default_arguments
../../gcc/gcc/cp/pt.c:10143
0x631760 tsubst_decl
../../gcc/gcc/cp/pt.c:10521
0x61be9f tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc/gcc/cp/pt.c:11357
0x6127fb tsubst_expr
../../gcc/gcc/cp/pt.c:13276
0x61208c tsubst_expr
../../gcc/gcc/cp/pt.c:13424
0x611093 tsubst_expr
../../gcc/gcc/cp/pt.c:13219
0x61208c tsubst_expr
../../gcc/gcc/cp/pt.c:13424
0x60f2a9 instantiate_decl(tree_node*, int, bool)
../../gcc/gcc/cp/pt.c:19690
0x64d8c7 instantiate_pending_templates(int)
../../gcc/gcc/cp/pt.c:19806
0x688bed cp_write_global_declarations()
../../gcc/gcc/cp/decl2.c:4148
Please submit a full bug report, [etc.]

This is a recent regression, introduced between 2014-01-28 and 2014-02-01. 

The bug is related to PR39055. It is actually the original testcase
of this PR (which never made it into the testsuite). Only a non-template
version of this testcase was added as
  gcc/testsuite/g++.dg/overload/defarg5.C


[Bug c++/60186] New: [4.9 Regression] [c++11] ICE with invalid value in constexpr array initializer

2014-02-13 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60186

Bug ID: 60186
   Summary: [4.9 Regression] [c++11] ICE with invalid value in
constexpr array initializer
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid code snippet (compiled with -std=c++11)
triggers an ICE on trunk:

=
templatetypename void foo(int i)
{
  constexpr int a[] = { i };
}
=

bug.cc: In function 'void foo(int)':
bug.cc:3:27: internal compiler error: unexpected expression 'i' of kind
implicit_conv_expr
   constexpr int a[] = { i };
   ^
0x73e03f cxx_eval_constant_expression
../../gcc/gcc/cp/semantics.c:9787
0x741085 cxx_eval_outermost_constant_expr
../../gcc/gcc/cp/semantics.c:9807
0x743d1b maybe_constant_value(tree_node*)
../../gcc/gcc/cp/semantics.c:9917
0x7499a8 maybe_constant_init(tree_node*)
../../gcc/gcc/cp/semantics.c:9934
0x6506d4 process_init_constructor_array
../../gcc/gcc/cp/typeck2.c:1195
0x6506d4 process_init_constructor
../../gcc/gcc/cp/typeck2.c:1476
0x6506d4 digest_init_r
../../gcc/gcc/cp/typeck2.c:1053
0x651f2a digest_init_flags
../../gcc/gcc/cp/typeck2.c:1098
0x651f2a store_init_value(tree_node*, tree_node*, vectree_node*, va_gc,
vl_embed**, int)
../../gcc/gcc/cp/typeck2.c:786
0x5c7195 check_initializer
../../gcc/gcc/cp/decl.c:5777
0x5d9ef0 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
../../gcc/gcc/cp/decl.c:6293
0x6c816d cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:16815
0x6c9929 cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:11205
0x6acc13 cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:11086
0x6add31 cp_parser_declaration_statement
../../gcc/gcc/cp/parser.c:10733
0x6ae37b cp_parser_statement
../../gcc/gcc/cp/parser.c:9467
0x6af169 cp_parser_statement_seq_opt
../../gcc/gcc/cp/parser.c:9745
0x6af2d6 cp_parser_compound_statement
../../gcc/gcc/cp/parser.c:9699
0x6c34ab cp_parser_function_body
../../gcc/gcc/cp/parser.c:18641
0x6c34ab cp_parser_ctor_initializer_opt_and_function_body
../../gcc/gcc/cp/parser.c:18677
Please submit a full bug report, [etc.]

The regression was introduced between 2014-01-14 and 2014-01-21.


[Bug c++/60186] [4.9 Regression] [c++11] ICE with invalid value in constexpr array initializer

2014-02-13 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60186

Volker Reichelt reichelt at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-invalid-code
  Known to work||4.7.0, 4.8.0
   Target Milestone|--- |4.9.0
  Known to fail||4.9.0


[Bug debug/60152] [4.9 Regression] multiple AT_calling_convention attributes generated after r205679

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60152

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Thu Feb 13 22:42:44 2014
New Revision: 207770

URL: http://gcc.gnu.org/viewcvs?rev=207770root=gccview=rev
Log:
PR debug/60152
* dwarf2out.c (gen_subprogram_die): Don't call
add_calling_convention_attribute if subr_die is old_die.

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


[Bug debug/60152] [4.9 Regression] multiple AT_calling_convention attributes generated after r205679

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60152

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||jakub at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org ---
Fixed.


[Bug c++/60187] New: [4.7/4.8/4.9 Regression] [c++11] ICE with parameter pack as underlying type for enum

2014-02-13 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60187

Bug ID: 60187
   Summary: [4.7/4.8/4.9 Regression] [c++11] ICE with parameter
pack as underlying type for enum
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid code snippet (compiled with -std=c++11)
triggers an ICE since GCC 4.6.0:

==
templatetypename... T struct A
{
  enum E : T {};
};

Aint a;
==

bug.cc: In instantiation of 'struct Aint':
bug.cc:6:8:   required from here
bug.cc:3:8: internal compiler error: in dependent_type_p, at cp/pt.c:20283
   enum E : T {};
^
0x5ff408 dependent_type_p(tree_node*)
../../gcc/gcc/cp/pt.c:20283
0x5d1e29 start_enum(tree_node*, tree_node*, tree_node*, bool, bool*)
../../gcc/gcc/cp/decl.c:12604
0x624e54 lookup_template_class_1
../../gcc/gcc/cp/pt.c:7518
0x624e54 lookup_template_class(tree_node*, tree_node*, tree_node*, tree_node*,
int, int)
../../gcc/gcc/cp/pt.c:7725
0x629673 tsubst_aggr_type
../../gcc/gcc/cp/pt.c:10031
0x61b9f1 tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc/gcc/cp/pt.c:11436
0x62e0d3 tsubst_decl
../../gcc/gcc/cp/pt.c:10824
0x61be9f tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc/gcc/cp/pt.c:11357
0x64a34a instantiate_class_template_1
../../gcc/gcc/cp/pt.c:9010
0x64a34a instantiate_class_template(tree_node*)
../../gcc/gcc/cp/pt.c:9274
0x6db973 complete_type(tree_node*)
../../gcc/gcc/cp/typeck.c:134
0x5c4f38 start_decl_1(tree_node*, bool)
../../gcc/gcc/cp/decl.c:4719
0x5ede67 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
../../gcc/gcc/cp/decl.c:4682
0x6c7e9e cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:16680
0x6c9929 cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:11205
0x6acc13 cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:11086
0x6d3ec2 cp_parser_declaration
../../gcc/gcc/cp/parser.c:10983
0x6d2bb8 cp_parser_declaration_seq_opt
../../gcc/gcc/cp/parser.c:10869
0x6d445a cp_parser_translation_unit
../../gcc/gcc/cp/parser.c:4014
0x6d445a c_parse_file()
../../gcc/gcc/cp/parser.c:31536
Please submit a full bug report, [etc.]

The code was correctly rejected by GCC 4.4.0
and wrongly accepted by GCC 4.4.1-4.5.3.


[Bug c++/60188] New: [c++11] ICE with parameter pack in default template parameter

2014-02-13 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60188

Bug ID: 60188
   Summary: [c++11] ICE with parameter pack in default template
parameter
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid code snippet (compiled with -std=c++11)
triggers an ICE since GCC 4.3.0:

===
struct A
{
  int i;
};

templatetypename... T, int A::* = T::i void foo() {}

template void fooA();
===

bug.cc: In substitution of 'templateclass ... T, int A::* anonymous  void
foo() [with T = {A}; int A::* anonymous = missing]':
bug.cc:8:22:   required from here
bug.cc:6:36: internal compiler error: in dependent_type_p, at cp/pt.c:20283
 templatetypename... T, int A::* = T::i void foo() {}
^
0x5ff408 dependent_type_p(tree_node*)
../../gcc/gcc/cp/pt.c:20283
0x5ffbc0 dependent_scope_p(tree_node*)
../../gcc/gcc/cp/pt.c:20314
0x6321b4 tsubst_qualified_id
../../gcc/gcc/cp/pt.c:12263
0x609c4c tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/gcc/cp/pt.c:14134
0x6115c6 tsubst_expr
../../gcc/gcc/cp/pt.c:13812
0x61e39c tsubst_template_arg
../../gcc/gcc/cp/pt.c:9293
0x639b80 type_unification_real
../../gcc/gcc/cp/pt.c:16326
0x64260a fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node*
const*, unsigned int, tree_node*, unification_kind_t, int, bool, bool)
../../gcc/gcc/cp/pt.c:15671
0x6432ca get_bindings
../../gcc/gcc/cp/pt.c:18402
0x643dfe determine_specialization
../../gcc/gcc/cp/pt.c:1968
0x644f31 check_explicit_specialization(tree_node*, tree_node*, int, int)
../../gcc/gcc/cp/pt.c:2636
0x5516f1 grokfndecl
../../gcc/gcc/cp/decl.c:7724
0x5ebfc4 grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*,
decl_context, int, tree_node**)
../../gcc/gcc/cp/decl.c:10798
0x6c9d5a cp_parser_explicit_instantiation
../../gcc/gcc/cp/parser.c:14111
0x6d3fef cp_parser_declaration
../../gcc/gcc/cp/parser.c:10956
0x6d2bb8 cp_parser_declaration_seq_opt
../../gcc/gcc/cp/parser.c:10869
0x6d445a cp_parser_translation_unit
../../gcc/gcc/cp/parser.c:4014
0x6d445a c_parse_file()
../../gcc/gcc/cp/parser.c:31536
0x7f37c3 c_common_parse_file()
../../gcc/gcc/c-family/c-opts.c:1060
Please submit a full bug report, [etc.]


[Bug c++/60189] New: ICE with invalid use of _Cilk_sync

2014-02-13 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60189

Bug ID: 60189
   Summary: ICE with invalid use of _Cilk_sync
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid code snippet (compiled with -fcilkplus)
triggers an ICE on trunk:

===
void foo()
{
  _Cilk_sync return;
}
===

bug.cc: In function 'void foo()':
bug.cc:5:3: internal compiler error: Segmentation fault
   _Cilk_sync return;
   ^
0xba523f crash_signal
../../gcc/gcc/toplev.c:337
0x6b9008 cp_parser_expression_statement
../../gcc/gcc/cp/parser.c:9635
0x6ae398 cp_parser_statement
../../gcc/gcc/cp/parser.c:9473
0x6af169 cp_parser_statement_seq_opt
../../gcc/gcc/cp/parser.c:9745
0x6af2d6 cp_parser_compound_statement
../../gcc/gcc/cp/parser.c:9699
0x6c34ab cp_parser_function_body
../../gcc/gcc/cp/parser.c:18641
0x6c34ab cp_parser_ctor_initializer_opt_and_function_body
../../gcc/gcc/cp/parser.c:18677
0x6c77f2 cp_parser_function_definition_after_declarator
../../gcc/gcc/cp/parser.c:22792
0x6c8691 cp_parser_function_definition_from_specifiers_and_declarator
../../gcc/gcc/cp/parser.c:22704
0x6c8691 cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:16585
0x6c9929 cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:11205
0x6acc13 cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:11086
0x6d3ec2 cp_parser_declaration
../../gcc/gcc/cp/parser.c:10983
0x6d2bb8 cp_parser_declaration_seq_opt
../../gcc/gcc/cp/parser.c:10869
0x6d445a cp_parser_translation_unit
../../gcc/gcc/cp/parser.c:4014
0x6d445a c_parse_file()
../../gcc/gcc/cp/parser.c:31536
0x7f37c3 c_common_parse_file()
../../gcc/gcc/c-family/c-opts.c:1060
Please submit a full bug report, [etc.]


[Bug c++/60189] ICE with invalid use of _Cilk_sync

2014-02-13 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60189

Volker Reichelt reichelt at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-invalid-code
 CC||bviyer at gcc dot gnu.org
  Known to fail||4.9.0

--- Comment #1 from Volker Reichelt reichelt at gcc dot gnu.org ---
Balaji, this looks like your domain, would you mind having a look?


[Bug c++/60190] New: [c++1y] ICE with invalid return type of template lambda

2014-02-13 Thread reichelt at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60190

Bug ID: 60190
   Summary: [c++1y] ICE with invalid return type of template
lambda
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: reichelt at gcc dot gnu.org

The following invalid line of code (compiled with -std=c++1y) triggers
an ICE on trunk:

==
auto f = []int() - int() {};
==

bug.cc:1:27: error: 'operator()' declared as function returning a function
 auto f = []int() - int() {};
   ^
bug.cc:1:29: internal compiler error: in poplevel_class, at
cp/name-lookup.c:2951
 auto f = []int() - int() {};
 ^
0x77d247 poplevel_class()
../../gcc/gcc/cp/name-lookup.c:2951
0x6626b8 popclass()
../../gcc/gcc/cp/class.c:7127
0x67756d finish_struct(tree_node*, tree_node*)
../../gcc/gcc/cp/class.c:6808
0x6b08a7 cp_parser_lambda_expression
../../gcc/gcc/cp/parser.c:8768
0x6b08a7 cp_parser_primary_expression
../../gcc/gcc/cp/parser.c:4305
0x6b20ed cp_parser_postfix_expression
../../gcc/gcc/cp/parser.c:5971
0x6b50c6 cp_parser_unary_expression
../../gcc/gcc/cp/parser.c:7170
0x6b5def cp_parser_binary_expression
../../gcc/gcc/cp/parser.c:7874
0x6b62e1 cp_parser_assignment_expression
../../gcc/gcc/cp/parser.c:8112
0x6b67a5 cp_parser_assignment_expression
../../gcc/gcc/cp/parser.c:8162
0x6b67a5 cp_parser_constant_expression
../../gcc/gcc/cp/parser.c:8372
0x6c82ce cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:16758
0x6c9929 cp_parser_simple_declaration
../../gcc/gcc/cp/parser.c:11205
0x6acc13 cp_parser_block_declaration
../../gcc/gcc/cp/parser.c:11086
0x6d3ec2 cp_parser_declaration
../../gcc/gcc/cp/parser.c:10983
0x6d2bb8 cp_parser_declaration_seq_opt
../../gcc/gcc/cp/parser.c:10869
0x6d445a cp_parser_translation_unit
../../gcc/gcc/cp/parser.c:4014
0x6d445a c_parse_file()
../../gcc/gcc/cp/parser.c:31536
0x7f37c3 c_common_parse_file()
../../gcc/gcc/c-family/c-opts.c:1060
Please submit a full bug report, [etc.]


[Bug libgomp/60035] [PATCH] make it possible to use OMP on both sides of a fork (without violating standard)

2014-02-13 Thread gcc-bugs at warnes dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60035

Gregory R. Warnes gcc-bugs at warnes dot net changed:

   What|Removed |Added

 CC||gcc-bugs at warnes dot net

--- Comment #3 from Gregory R. Warnes gcc-bugs at warnes dot net ---
+1   

I've just spent several days tracking down the cause of the mysterious hangs in
processes forked by R (http://www.r-project.org).   A resolution of this issue
would be very helpful.


[Bug plugins/59335] Plugin doesn't build on trunk

2014-02-13 Thread joey.ye at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59335

Joey Ye joey.ye at arm dot com changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |---

--- Comment #11 from Joey Ye joey.ye at arm dot com ---
Reopen per-requested.


[Bug c++/60187] [4.7/4.8/4.9 Regression] [c++11] ICE with parameter pack as underlying type for enum

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60187

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-02-14
 CC||jakub at gcc dot gnu.org,
   ||jason at gcc dot gnu.org
   Target Milestone|--- |4.7.4
 Ever confirmed|0   |1

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
ICE started with r165935.


[Bug middle-end/60175] ICE on gcc.dg/asan/nosanitize-and-inline.c

2014-02-13 Thread y.gribov at samsung dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60175

Yury Gribov y.gribov at samsung dot com changed:

   What|Removed |Added

 CC||y.gribov at samsung dot com

--- Comment #1 from Yury Gribov y.gribov at samsung dot com ---
I can reproduce this with trunk version. Build options are `-O2 -funroll-loops
-fsanitize=address'.


[Bug rtl-optimization/42575] arm-eabi-gcc 64-bit multiply weirdness

2014-02-13 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42575

Bernd Edlinger bernd.edlinger at hotmail dot de changed:

   What|Removed |Added

 CC||bernd.edlinger at hotmail dot 
de

--- Comment #11 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
The test case fails on current trunk:

longfunc:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
mulr3, r0, r3
push{r4, r5}
umullr4, r5, r0, r2
mlar1, r2, r1, r3
movr0, r4
addr5, r5, r1
movr1, r5
pop{r4, r5}
bxlr
.sizelongfunc, .-longfunc
.identGCC: (GNU) 4.9.0 20140209 (experimental)


[Bug rtl-optimization/42575] arm-eabi-gcc 64-bit multiply weirdness

2014-02-13 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42575

--- Comment #12 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
$ gcc -v

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/home/ed/gnu/arm-linux-gnueabihf/libexec/gcc/armv7l-unknown-linux-gnueabihf/4.9.0/lto-wrapper
Target: armv7l-unknown-linux-gnueabihf
Configured with: ../gcc-4.9-20140209/configure
--prefix=/home/ed/gnu/arm-linux-gnueabihf
--enable-languages=c,c++,objc,obj-c++,fortran,ada,go --with-arch=armv7-a
--with-tune=cortex-a9 --with-fpu=vfpv3-d16 --with-float=hard
Thread model: posix
gcc version 4.9.0 20140209 (experimental) (GCC)


[Bug c++/60186] [4.9 Regression] [c++11] ICE with invalid value in constexpr array initializer

2014-02-13 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60186

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-02-14
 CC||jakub at gcc dot gnu.org,
   ||jason at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
Started with r206639, and eventhough that change has been partly reverted in
r207051, the ICE continues to trigger.