[Bug lto/64374] [5 Regression] LTO ICE in extract_insn, at recog.c:2327

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64374

--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org ---
I see another issue.  When we stream in OPTIMIZATION_NODE/TARGET_OPTIONS_NODE,
we don't use build_optimization_node/build_target_option_node and thus we don't
merge identical nodes by hashing them together in between different streamed in
TUs (or does it happen somehow else)?  If it doesn't happen, then it
unnecessarily slows down lto1, because it needs to reinitialize the backend
more often and switch in between different target options even when they are
effectively the same.
Though, of course, if we'd hash them together, we'd need to call some target
hook to resync the streamed in options with the global state before hashing
them together, because they can't be changed while they are in the hash table.


[Bug bootstrap/63888] [5 Regression] bootstrap failed when configured with -with-build-config=bootstrap-asan --disable-werror

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63888

--- Comment #31 from Jakub Jelinek jakub at gcc dot gnu.org ---
Any progress on this?

If not, I'm considering doing:
--- libsanitizer/asan/asan_globals.cc.jj2014-11-14 00:10:34.0 +0100
+++ libsanitizer/asan/asan_globals.cc2015-02-20 11:43:33.179177767 +0100
@@ -148,7 +148,9 @@ static void RegisterGlobal(const Global
   CHECK(AddrIsInMem(g-beg));
   CHECK(AddrIsAlignedByGranularity(g-beg));
   CHECK(AddrIsAlignedByGranularity(g-size_with_redzone));
-  if (flags()-detect_odr_violation) {
+  // This ODR violation detection is fundamentally incompatible with
+  // how GCC registers globals.  Disable as useless until rewritten upstream.
+  if (0  flags()-detect_odr_violation) {
 // Try detecting ODR (One Definition Rule) violation, i.e. the situation
 // where two globals with the same name are defined in different modules.
 if (__asan_region_is_poisoned(g-beg, g-size_with_redzone)) {
for now.


[Bug rtl-optimization/64081] [5 Regression] r217827 prevents RTL loop unroll

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64081

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #14 from Jakub Jelinek jakub at gcc dot gnu.org ---
Any progress on this?


[Bug bootstrap/63888] [5 Regression] bootstrap failed when configured with -with-build-config=bootstrap-asan --disable-werror

2015-02-20 Thread y.gribov at samsung dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63888

--- Comment #32 from Yury Gribov y.gribov at samsung dot com ---
Or (probably less intrusive) add detect_odr_violation=0 to ASAN_OPTIONS
config/bootstrap-asan.mk.


[Bug target/64452] [4.8/4.9/5.0 Regression] ICE in avr-gcc when passing struct member to varargs function

2015-02-20 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64452

--- Comment #4 from Georg-Johann Lay gjl at gcc dot gnu.org ---
Author: gjl
Date: Fri Feb 20 11:15:56 2015
New Revision: 220849

URL: https://gcc.gnu.org/viewcvs?rev=220849root=gccview=rev
Log:
gcc/
Backport from 2015-02-20 trunk r220847.
PR target/64452
* config/avr/avr.md (pushhi_insn): New insn.
(pushmode1): Push virtual regs in one chunk using pushhi1_insn.
gcc/testsuite/
Backport from 2015-02-20 trunk r220847.
PR target/64452
* gcc.target/avr/torture/pr64452.c: New test.

Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.target/avr/torture/pr64452.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/config/avr/avr.md
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog


[Bug c++/64969] generic functions do not work with placeholder return types

2015-02-20 Thread harald at gigawatt dot nl
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64969

Harald van Dijk harald at gigawatt dot nl changed:

   What|Removed |Added

 CC||harald at gigawatt dot nl

--- Comment #3 from Harald van Dijk harald at gigawatt dot nl ---
This happens because auto is encoded as a template parameter that is one level
deeper than the currently deepest real template parameter. In other words,
  auto f()
is encoded as
  template-param-1-1 f(),
and
  template typename T auto f()
is encoded as
  template typename T template-param-2-1 f().

Given
  auto f1(auto x),
when the first auto is parsed, it becomes
  template-param-1-1 f1(auto x).
When the second auto is parsed, and the function implicitly becomes a template,
it looks like
  template typename auto  template-param-1-1
f1(template-param-1-1 x)
where the first template-param-1-1 should be template-param-2-1.

Instead of fixing up existing references to auto when a function is implicitly
made a template, how about encoding auto as a template argument with a level of
zero, and adding a tf_auto flag for tsubst to specify that auto is to be
replaced? If that flag is specified, fix up the zero by changing it to
(processing_template_decl+1), if that flag is not specified, leave auto alone.
All that seems to be needed aside from that, in a quick test, is making
reduce_template_parm_level aware of them, making it leave a level of zero at
zero. The cases in this bug pass, and manually running tests on
gcc/testsuite/g++.dg/cpp1y/auto* doesn't show problems either. I'll do some
more extensive testing, and also run the full test suite.


[Bug middle-end/64491] [5 Regression] incorrect warning: loop exit may only be reached after undefined behavior

2015-02-20 Thread ams at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64491

--- Comment #10 from Andrew Stubbs ams at gcc dot gnu.org ---
I'm trying to look at this problem, but so far all my builds are failing.
Probably I have some local cruft.

In the meantime, the workaround is to use -Wno-aggressive-loop-optimizations, I
think.


[Bug target/64347] constructor priorities are not supported in avr-gcc

2015-02-20 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64347

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||gjl at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #1 from Georg-Johann Lay gjl at gcc dot gnu.org ---
constructor priority is same as init priority, cf. PR60588.

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


[Bug target/60588] AVR target does not support init_priority attribute

2015-02-20 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60588

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P5
 CC||gjl at gcc dot gnu.org


[Bug target/60588] AVR target does not support init_priority attribute

2015-02-20 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60588

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

 CC||cameron at tacklind dot com

--- Comment #2 from Georg-Johann Lay gjl at gcc dot gnu.org ---
*** Bug 64347 has been marked as a duplicate of this bug. ***


[Bug rtl-optimization/64081] [5 Regression] r217827 prevents RTL loop unroll

2015-02-20 Thread izamyatin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64081

--- Comment #15 from Igor Zamyatin izamyatin at gmail dot com ---
Got an access to AIX machine, planning to look at it next week


[Bug target/64452] [4.8/4.9/5.0 Regression] ICE in avr-gcc when passing struct member to varargs function

2015-02-20 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64452

--- Comment #2 from Georg-Johann Lay gjl at gcc dot gnu.org ---
Author: gjl
Date: Fri Feb 20 10:30:24 2015
New Revision: 220847

URL: https://gcc.gnu.org/viewcvs?rev=220847root=gccview=rev
Log:
gcc/
PR target/64452
* config/avr/avr.md (pushhi_insn): New insn.
(pushmode1): Push virtual regs in one chunk using pushhi1_insn.
gcc/testsuite/
PR target/64452
* gcc.target/avr/torture/pr64452.c: New test.

Added:
trunk/gcc/testsuite/gcc.target/avr/torture/pr64452.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/avr/avr.md
trunk/gcc/testsuite/ChangeLog


[Bug libstdc++/65131] Integer overflow in .size() for std::vector

2015-02-20 Thread fayard at insideloop dot io
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65131

--- Comment #7 from Francois Fayard fayard at insideloop dot io ---
I agree. Thanks for your comments.


[Bug target/63892] [5 Regression] gcc.dg/sibcall-3.c fails on darwin with -m32

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63892

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 34815
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34815action=edit
gcc5-pr63892.patch

This untested patch fixes the issue too, though if the #c4 patch could be made
to work, it might be perhaps unnecessary because we would never try to add
thunks in between local functions.  Or is there any case where it would make
sense to add them rather than redirect callers?


[Bug target/64452] [4.8/4.9/5.0 Regression] ICE in avr-gcc when passing struct member to varargs function

2015-02-20 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64452

--- Comment #3 from Georg-Johann Lay gjl at gcc dot gnu.org ---
Author: gjl
Date: Fri Feb 20 10:46:05 2015
New Revision: 220848

URL: https://gcc.gnu.org/viewcvs?rev=220848root=gccview=rev
Log:
gcc/
Backport from 2015-02-20 trunk r220847.
PR target/64452
* config/avr/avr.md (pushhi_insn): New insn.
(pushmode1): Push virtual regs in one chunk using pushhi1_insn.
gcc/testsuite/
Backport from 2015-02-20 trunk r220847.
PR target/64452
* gcc.target/avr/torture/pr64452.c: New test.

Added:
branches/gcc-4_9-branch/gcc/testsuite/gcc.target/avr/torture/pr64452.c
Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/config/avr/avr.md
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


[Bug target/64452] [4.8/4.9 Regression] ICE in avr-gcc when passing struct member to varargs function

2015-02-20 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64452

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
  Known to work||4.8.5, 4.9.3
 Resolution|--- |FIXED
   Target Milestone|--- |4.9.3
Summary|[4.8/4.9/5.0 Regression]|[4.8/4.9 Regression] ICE in
   |ICE in avr-gcc when passing |avr-gcc when passing struct
   |struct member to varargs|member to varargs function
   |function|

--- Comment #5 from Georg-Johann Lay gjl at gcc dot gnu.org ---
Fixed in 4.8.5 and 4.9.3+


[Bug bootstrap/63888] [5 Regression] bootstrap failed when configured with -with-build-config=bootstrap-asan --disable-werror

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63888

--- Comment #33 from Jakub Jelinek jakub at gcc dot gnu.org ---
That is not sufficient.  The bug affects all programs, not just gcc when
bootstrapping it.


[Bug rtl-optimization/64158] [5 Regression] FAIL: gcc.dg/pr44194-1.c scan-rtl-dump dse1 global deletions = (2|3)

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64158

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||macro at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
Is this a regression though?
I see the
FAIL: gcc.dg/pr44194-1.c scan-rtl-dump dse1 global deletions = (2|3)
even with gcc 4.7.x, 4.8.x, 4.9.x on ppc64.
There was an attempt to avoid running this test on ppc64-linux:
https://gcc.gnu.org/ml/gcc-patches/2014-08/msg00299.html
r213657 and r213677
but clearly that is not working well.
Don't have a ppc64 box readily available now, so can't quickly analyze what's
going on though.  I see:

Executing on host:
/builddir/build/BUILD/gcc-5.0.0-20150217/obj-ppc64-redhat-linux/gcc/xgcc
-B/builddir/build/BUILD/gcc-5.0.0-20150217/obj-ppc64-redhat-linux/gcc/ 
-fno-diagnostics-show-caret -fdiagnostics-color=never  -c   -o
powerpc_elfv216903.o powerpc_elfv216903.c(timeout = 300)
spawn -ignore SIGHUP
/builddir/build/BUILD/gcc-5.0.0-20150217/obj-ppc64-redhat-linux/gcc/xgcc
-B/builddir/build/BUILD/gcc-5.0.0-20150217/obj-ppc64-redhat-linux/gcc/
-fno-diagnostics-show-caret -fdiagnostics-color=never -c -o
powerpc_elfv216903.o powerpc_elfv216903.c
powerpc_elfv216903.c:3:7: error: #error not ELF v2 ABI
compiler exited with status 1
output is:
powerpc_elfv216903.c:3:7: error: #error not ELF v2 ABI
...
Executing on host:
/builddir/build/BUILD/gcc-5.0.0-20150217/obj-ppc64-redhat-linux/gcc/xgcc
-B/builddir/build/BUILD/gcc-5.0.0-20150217/obj-ppc64-redhat-linux/gcc/
/builddir/build/BUILD/gcc-5.0.0-20150217/gcc/testsuite/gcc.dg/pr44194-1.c 
-fno-diagnostics-show-caret -fdiagnostics-color=never  -O2 -fdump-rtl-dse1
-fdump-rtl-final -ffat-lto-objects -ffat-lto-objects -S   -o pr44194-1.s   
(timeout = 300)
spawn -ignore SIGHUP
/builddir/build/BUILD/gcc-5.0.0-20150217/obj-ppc64-redhat-linux/gcc/xgcc
-B/builddir/build/BUILD/gcc-5.0.0-20150217/obj-ppc64-redhat-linux/gcc/
/builddir/build/BUILD/gcc-5.0.0-20150217/gcc/testsuite/gcc.dg/pr44194-1.c
-fno-diagnostics-show-caret -fdiagnostics-color=never -O2 -fdump-rtl-dse1
-fdump-rtl-final -ffat-lto-objects -ffat-lto-objects -S -o pr44194-1.s
PASS: gcc.dg/pr44194-1.c (test for excess errors)
FAIL: gcc.dg/pr44194-1.c scan-rtl-dump dse1 global deletions = (2|3)
PASS: gcc.dg/pr44194-1.c scan-rtl-dump-not final insn[: ][^\n]*set
\\(mem(?![^\n]*scratch)

in the gcc.log from our rpm build, so I'd expect that powerpc_elfv2 is 0 and
therefore the pr44194-1.c test should be skipped as unsupported.


[Bug c/65088] Does GCC has load/store widening phase?

2015-02-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65088

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
See bug 23684.


[Bug target/63892] [5 Regression] gcc.dg/sibcall-3.c fails on darwin with -m32

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63892

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org ---
So, during ICF we don't create alias because
sem_item::target_supports_symbol_aliases_p () tells us not to.
But I really don't see a reason why we couldn't try to redirect_callers in this
case, both original and alias are local functions without address taken.
There is another case that worries me - if the above mentioned function returns
false, we set create_thunk even for stdarg_p functions.

So, I think we should do something like:

--- gcc/ipa-icf.c.jj2015-02-19 12:52:33.0 +0100
+++ gcc/ipa-icf.c2015-02-20 10:06:04.532637240 +0100
@@ -651,7 +651,9 @@ sem_function::merge (sem_item *alias_ite
  section (or we risk link failures when section is discarded).  */
   if ((original_address_matters
 alias_address_matters)
-  || original_discardable)
+  || original_discardable
+  || DECL_COMDAT_GROUP (alias-decl)
+  || !sem_item::target_supports_symbol_aliases_p ())
 {
   create_thunk = !stdarg_p (TREE_TYPE (alias-decl));
   create_alias = false;
@@ -659,6 +661,7 @@ sem_function::merge (sem_item *alias_ite
  the extra thunk wrapper for direct calls.  */
   redirect_callers
 = (!original_discardable
+!DECL_COMDAT_GROUP (alias-decl)
 alias-get_availability ()  AVAIL_INTERPOSABLE
 original-get_availability ()  AVAIL_INTERPOSABLE
 !alias-instrumented_version);
@@ -670,13 +673,6 @@ sem_function::merge (sem_item *alias_ite
   redirect_callers = false;
 }

-  if (create_alias  (DECL_COMDAT_GROUP (alias-decl)
-   || !sem_item::target_supports_symbol_aliases_p ()))
-{
-  create_alias = false;
-  create_thunk = true;
-}
-
   /* We want thunk to always jump to the local function body
  unless the body is comdat and may be optimized out.  */
   if ((create_thunk || redirect_callers)

Unfortunately this ICEs on the testcase in question, when we reach:
725  /* The alias function is removed if symbol address
726 does not matter.  */
727  if (!alias_address_matters)
728alias-remove ();
because in
1645void
1646sem_item_optimizer::remove_symtab_node (symtab_node *node)
1647{
1648  gcc_assert (!m_classes.elements());
1649
1650  m_removed_items_set.add (node);
1651}
called during the alias-remove ()
m_classes.elements() is 3.  I'm not familiar with that code, Martin/Honza, can
you please have a look?

And, another thing, not analyzed fully, is that when we create a thunk to the
local calling convention function and the thunk isn't visible either, the
question is why it doesn't use the same calling convention (i.e. local again).

Last thing, I believe we should change the testcase anyway, either use
-fno-ipa-icf or add say some volatile int v; v++;
into one of the functions, so that sibcall-3.c tests what it originally meant
to test.  With ICF it can be turned into a tail recursion test, while clearly
originally it was meant to be a tail call test.
We can certainly copy the current testcase into a new one...


[Bug libstdc++/64135] Allocator base classes should use reserved names

2015-02-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64135

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-02-20
 Ever confirmed|0   |1


[Bug c++/62116] Allowing redeclaration of global variable x using ::x

2015-02-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62116

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||accepts-invalid
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-02-20
 Ever confirmed|0   |1

--- Comment #4 from Jonathan Wakely redi at gcc dot gnu.org ---
Confirmed then. Thanks, Richard.


[Bug libstdc++/65131] Integer overflow in .size() for std::vector

2015-02-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65131

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org ---
https://gcc.gnu.org/ml/gcc/2011-08/msg00221.html


[Bug c++/65132] New: diagnostics: missing: bitfield member cannot have an in-class initializer

2015-02-20 Thread jan.kratochvil at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65132

Bug ID: 65132
   Summary: diagnostics: missing: bitfield member cannot have an
in-class initializer
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jan.kratochvil at redhat dot com

class C { bool x:1=false; };

g++ (GCC) 5.0.0 20150219 (experimental):
field.C:1:20: error: an assignment cannot appear in a constant-expression

clang-3.5.0-6.fc21.x86_64:
field.C:1:19: error: bitfield member cannot have an in-class initializer

I had no idea what GCC errors on until I asked clang.


[Bug go/65134] New: gccgo ignores the attribute constructor in a subdirectory

2015-02-20 Thread e29253 at jp dot ibm.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65134

Bug ID: 65134
   Summary: gccgo ignores the attribute constructor in a
subdirectory
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: go
  Assignee: ian at airs dot com
  Reporter: e29253 at jp dot ibm.com
CC: cmang at google dot com

Created attachment 34813
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34813action=edit
Example to reproduce the constructor problem

Gccgo ignores a C-function with the constructor attribute in a subdirectory.
In the attached example, gc executes a C-function init() in sub.go before a Go
function main(), but gccgo does not:

~/example$ export GOPATH=$(pwd)
~/example$ /usr/local/go/bin/go version
go version go1.4.2 linux/amd64
~/example$ /usr/local/go/bin/go run src/main/main.go
Hello from constructor
Hello from main

~/example$ export LD_LIBRARY_PATH=/usr/local/gccgo/lib64:$LD_LIBRARY_PATH
~/example$ /usr/local/gccgo/bin/go version
go version gccgo (GCC) 5.0.0 20150115 (experimental) linux/amd64
~/example$ /usr/local/gccgo/bin/go run src/main/main.go
Hello from main

~/example$

It seems this difference is due to that gccgo cannot detect a function with the
constructor attribute in an archived objects created in a subdirectory. Is
there any workaround to avoid this problem?


[Bug libstdc++/65131] Integer overflow in .size() for std::vector

2015-02-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65131

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Severity|major   |normal

--- Comment #4 from Jonathan Wakely redi at gcc dot gnu.org ---
And you can't actually allocate 2^64 bytes of memory on x86_64 either.

In practice this doesn't really matter, noone uses max_size() this way.


[Bug libstdc++/65131] Integer overflow in .size() for std::vector

2015-02-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65131

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
The ABI says for all 32bit ABIs you cannot allocate more than half of the
address space.


[Bug debug/58315] [4.8/4.9/5 Regression] Excessive memory use with -g

2015-02-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58315

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Target||x86_64-*-*
 Status|WAITING |NEW
  Known to work||4.7.4

--- Comment #9 from Richard Biener rguenth at gcc dot gnu.org ---
Hmm, I still see 2GB of memory - just checked with ulimit -v 200 where 4.7
succeeds but 4.8, 4.9 and 5 (r220758).

Thus, re-confirmed.  Without var-tracking GCC 5 tops out at ~400MB.

I don't get the following note:

b.ii: In function ‘bool {anonymous}::test03()’:
b.ii:84991:1: note: variable tracking size limit exceeded with
-fvar-tracking-assignments, retrying without

did you use some patched GCC with lower limits?

[Bug c/45779] pointer difference error/ptrdiff_t representability

2015-02-20 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45779

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org ---
https://gcc.gnu.org/ml/gcc/2011-08/msg00221.html


[Bug libstdc++/65131] Integer overflow in .size() for std::vector

2015-02-20 Thread fayard at insideloop dot io
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65131

--- Comment #3 from Francois Fayard fayard at insideloop dot io ---
Thanks for the info. It would be nice to reflect that in max_size().


[Bug c++/65133] New: [C++11] Result type deduction proceeds even though argument deduction fails

2015-02-20 Thread mbianco at cscs dot ch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65133

Bug ID: 65133
   Summary: [C++11] Result type deduction proceeds even though
argument deduction fails
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mbianco at cscs dot ch

GCC 4.8.0 to 4.9.0 fails in employing SFINAE to find the proper implementation
when infinite template recursion is hit. ICPC (15) and CLANG++ (3.7) compile
and run the code correctly.


#STANDALONE SOURCE

#include iostream
#include type_traits

template int I
struct count
{
using type = typename countI-1::type;
};

template 
struct count0
{
using type = void;
};


template int I
auto foo(typename std::enable_if(I=0)::type * = nullptr) - typename
countI::type
/* Substituting countI::type with void would make the code to compile.*/
{
std::cout  I=0  std::endl;
}


// Specialization #2
template int I
void foo(typename std::enable_if(I0)::type * = nullptr)
{
std::cout  I0  std::endl;
}

int main() {

foo2(); // This Works fine
foo-1(); // This should go the specialization #2 but GCC fails since it
goes into counting down 900 times without resolution

return 0;
}

### COMPILER INVOCATION:
g++ -std=c++11 -c main.cpp


### EXPECTED OUTPUT:
Successful compile.


### ACTUAL OUTPUT:
main.cpp:7:43: error: template instantiation depth exceeds maximum of 900 (use
-ftemplate-depth= to increase the maximum) instantiating ‘struct count-900’
 using type = typename countI-1::type;
   ^
main.cpp:7:43:   recursively required from ‘struct count-2’
main.cpp:7:43:   required from ‘struct count-1’
main.cpp:18:6:   required by substitution of ‘templateint I typename
countI::type foo(typename std::enable_if(I = 0)::type*) [with int I = -1]’
main.cpp:35:13:   required from here

main.cpp:7:43: error: invalid use of incomplete type ‘struct count-900’
main.cpp:5:8: error: declaration of ‘struct count-900’
 struct count
^

### g++ -v OUTPUT:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/apps/dom/gcc/4.9.0/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/apps/dom/gcc/4.9.0
--enable-languages=c,c++,fortran --with-mpfr=/apps/dom/gnu/mpfr/3.1.2
--with-mpc=/apps/dom/gnu/mpc/1.0.2 --with-gmp=/apps/dom/gnu/gmp/5.1.3
--with-isl=/apps/dom/gnu/isl/0.12.2 --with-cloog=/apps/dom/gnu/cloog/0.18.1
Thread model: posix
gcc version 4.9.0 (GCC)

[Bug libstdc++/65131] Integer overflow in .size() for std::vector

2015-02-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65131

--- Comment #6 from Jonathan Wakely redi at gcc dot gnu.org ---
It seems like a waste of time. The internals of the standard library are not
the right place to dissuade people from their mistaken beliefs. Simply trying
to allocate such an array should be evidence enough.


[Bug sanitizer/63958] [5 Regression] bootstrap failure in the sanitizer libs on sparc-linux-gnu

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63958

--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org ---
The r216224 change apparently applies cleanly to the current sources, does it
fix all the sparc*-linux build issues?  My SPARC box is long time dead...


[Bug testsuite/65126] [5 Regresion] additional_sources not defined anymore during dg-final

2015-02-20 Thread vries at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65126

--- Comment #4 from vries at gcc dot gnu.org ---
(In reply to Maxim Kuvyrkov from comment #3)
 Hi Tom,
 
 I can't reproduce this.  I'm trying make check-gcc RUNTESTFLAGS=vect.exp
 on a native x86_64 bootstrap.
 
 What is required to trigger this?


Hi Maxim,

vect.exp=vect-simd-clone-10.c should trigger this.

Running vect-simd-clone-10.c produces the leftover
vect-simd-clone-10a.c.126t.vect.

But if vect-simd-clone-10a.c is run afterwards, then
vect-simd-clone-10a.c.126t.vect is first overwritten, and then cleaned up.

So whether the file is still there after the test run depends on whether 10a is
run after 10 in the same testdirectory.


Reproduced it with a fresh build from r220825:
...
$ make -k -j5 check RUNTESTFLAGS=vect.exp=vect-simd-clone-10.c
--target_board=unix

  ...

$ ls lean/build/gcc/testsuite/gcc*
lean/build/gcc/testsuite/gcc:
gcc.log  gcc.log.sep  gcc.sum  gcc.sum.sep  site.exp

lean/build/gcc/testsuite/gcc1:
gcc.log.sep  gcc.sum.sep  site.exp  vect-simd-clone-10a.c.126t.vect

lean/build/gcc/testsuite/gcc2:
gcc.log.sep  gcc.sum.sep  site.exp

lean/build/gcc/testsuite/gcc3:
gcc.log.sep  gcc.sum.sep  site.exp
...


[Bug libstdc++/65131] Integer overflow in .size() for std::vector

2015-02-20 Thread fayard at insideloop dot io
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65131

--- Comment #5 from Francois Fayard fayard at insideloop dot io ---
They are so many people out there who claim that using an unsigned integer
(std::size_t) as an array index was a good choice because you can allocate
larger arrays than with the signed integer of the same size (std::ptrdiff_t)
that it would be nice to show them they can't :-)

max_size() is not clearly defined, but I still think it would be nice to put it
in max_size() as a documentation.


[Bug c++/65127] [5 Regression] internal compiler error: tree check: expected tree that contains 'decl minimal' structure, have 'addr_expr' in parsing_nsdmi, at cp/parser.c:18311

2015-02-20 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65127

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-02-20
 CC||mpolacek at gcc dot gnu.org
   Target Milestone|--- |5.0
Summary|internal compiler error:|[5 Regression] internal
   |tree check: expected tree   |compiler error: tree check:
   |that contains 'decl |expected tree that contains
   |minimal' structure, have|'decl minimal' structure,
   |'addr_expr' in  |have 'addr_expr' in
   |parsing_nsdmi, at   |parsing_nsdmi, at
   |cp/parser.c:18311   |cp/parser.c:18311
 Ever confirmed|0   |1

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
Started with r216750.

Note that we ICE even on

templateint sz void make_item()
{
  static int i{100};

  struct
  {
int id{i++};
  } item;
}

int main()
{
  make_item0();
}

which is accepted by 4.9 and clang.


[Bug rtl-optimization/65135] New: Performance regression in pic mode after r220674.

2015-02-20 Thread ysrumyan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65135

Bug ID: 65135
   Summary: Performance regression  in pic mode after r220674.
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ysrumyan at gmail dot com

We noticed 10% regression on one important benchmark using for testing x86
32-bit platforms. This regression can be reproduced on attached test-case: one
more fill is present in innermost loop after r220674. One possible decision is
spillong  live phisical registers not referenced in (innermost) loops
(GOT-register in out test-case) in loop preheader with subsequent restore it in
loop post header. Note that regression can be seen only in pic mode for 32-bit
x86 platform.


[Bug testsuite/65126] [5 Regresion] additional_sources not defined anymore during dg-final

2015-02-20 Thread mkuvyrkov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65126

Maxim Kuvyrkov mkuvyrkov at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mkuvyrkov at gcc dot gnu.org

--- Comment #5 from Maxim Kuvyrkov mkuvyrkov at gcc dot gnu.org ---
The problem here is that gcc_target_compile (and, probably, other
*_target_compile procs) clears out additional_sources as soon as it is done.

I don't immediately know how to fix this properly.  A quick fix may be to delay
clearing out additional_sources till a later point.

More generally, from what I see GCC's testsuite doesn't have coordinated
maintenance of its global state (additional_* and other variables, see
gcc-dg.exp).  It would be a nice cleanup to have PUSH and POP operations for
global state that could used to 

1. clearing of state for next test
  -- the POP to a reference clean state would be done once all parts of the
test would finish, thus removing the need to clear out additional_sources after
compilation (== midway through running the test).

2. saving / restoring of state for target-supports checks.


[Bug tree-optimization/65136] New: VRP inserts unnecessary constant copy in the loop

2015-02-20 Thread izamyatin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65136

Bug ID: 65136
   Summary: VRP inserts unnecessary constant copy in the loop
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: izamyatin at gmail dot com

For the following piece of code

int foo (unsigned int cc)
{

   while ( cc  16 )
  {
  cc = (cc  0x) + (cc  16);
  }

   return cc == 1;
}

at o2 we have 

movl%edi, %eax
shrl$16, %eax
testl   %eax, %eax
je  .L2
.p2align 4,,10
.p2align 3
.L3:
movzwl  %di, %edi
addl%eax, %edi
movl$1, %eax
movl%edi, %edx
shrl$16, %edx
testl   %edx, %edx
jne .L3

while with -fno-tree-vrp

jmp .L8
.p2align 4,,10
.p2align 3
.L3:
movzwl  %di, %edi
addl%eax, %edi
.L8:
movl%edi, %eax
shrl$16, %eax
testl   %eax, %eax
jne .L3


vrp changes loop in a following way

  bb 4:
  # cc_12 = PHI cc_2(D)(3), cc_5(4)
  # _13 = PHI _11(3), 1(4)
  _4 = cc_12  65535;
  cc_5 = _13 + _4;
  _3 = cc_5  16;
  if (_3 != 0)
goto bb 4;
  else
goto bb 5;

resulted in constant copy to be inserted.


[Bug rtl-optimization/65135] Performance regression in pic mode after r220674.

2015-02-20 Thread ysrumyan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65135

--- Comment #1 from Yuri Rumyantsev ysrumyan at gmail dot com ---
Created attachment 34814
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34814action=edit
test-case to reproduce

Need to compile with -O2 -m32 -fPIE -pie options.


[Bug ipa/65028] [5 Regression] 450.soplex in SPEC CPU 2006 is miscompiled

2015-02-20 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65028

--- Comment #58 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
The Firefox issue from comment #49 is fixed.


[Bug target/63892] [5 Regression] gcc.dg/sibcall-3.c fails on darwin with -m32

2015-02-20 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63892

--- Comment #6 from Martin Liška marxin at gcc dot gnu.org ---
Created attachment 34817
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34817action=edit
Fixed IPA ICF hooks

Hello Jakub.

Your patch in #c4 is correct, assert is caused due to wrong placement of
unregister hooks. Please see the patch, I tested on my x86_64-linux-pc machine
(where I return false in target_supports_symbol_aliases_p) and it works me.

Thanks,
Martin

[Bug target/63483] Scheduler performs Invalid move of aliased memory reference

2015-02-20 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63483

--- Comment #23 from uros at gcc dot gnu.org ---
Author: uros
Date: Fri Feb 20 12:04:21 2015
New Revision: 220854

URL: https://gcc.gnu.org/viewcvs?rev=220854root=gccview=rev
Log:
Backport from mainline
2015-01-22 Wei Mi w...@google.com

PR rtl-optimization/64557
* dse.c (record_store): Call get_addr for mem_addr.
(check_mem_read_rtx): Likewise.

Backport from mainline
2014-10-20  Uros Bizjak  ubiz...@gmail.com

* varasm.c (const_alias_set): Remove.
(init_varasm_once): Remove initialization of const_alias_set.
(build_constant_desc): Do not set alias set to const_alias_set.

Backport from mainline
2014-10-14  Uros Bizjak  ubiz...@gmail.com

PR rtl-optimization/63475
* alias.c (true_dependence_1): Always use get_addr to extract
true address operands from x_addr and mem_addr.  Use extracted
address operands to check for references with alignment ANDs.
Use extracted address operands with find_base_term and
base_alias_check. For noncanonicalized operands call canon_rtx with
extracted address operand.
(write_dependence_1): Ditto.
(may_alias_p): Ditto.  Remove unused calls to canon_rtx.

Backport from mainline
2014-10-10  Uros Bizjak  ubiz...@gmail.com

PR rtl-optimization/63483
* alias.c (true_dependence_1): Do not exit early for MEM_READONLY_P
references when alignment ANDs are involved.
(write_dependence_p): Ditto.
(may_alias_p): Ditto.

Backport from mainline
2013-03-26  Richard Biener  rguent...@suse.de

* alias.c (find_base_term): Avoid redundant and not used recursion.
(base_alias_check): Get the initial base term from the caller.
(true_dependence_1): Compute and pass base terms to base_alias_check.
(write_dependence_p): Likewise.
(may_alias_p): Likewise.


Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/alias.c
branches/gcc-4_8-branch/gcc/dse.c
branches/gcc-4_8-branch/gcc/varasm.c


[Bug rtl-optimization/64557] get_addr in true_dependence_1 cannot handle VALUE inside an expr

2015-02-20 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64557

--- Comment #5 from uros at gcc dot gnu.org ---
Author: uros
Date: Fri Feb 20 12:04:21 2015
New Revision: 220854

URL: https://gcc.gnu.org/viewcvs?rev=220854root=gccview=rev
Log:
Backport from mainline
2015-01-22 Wei Mi w...@google.com

PR rtl-optimization/64557
* dse.c (record_store): Call get_addr for mem_addr.
(check_mem_read_rtx): Likewise.

Backport from mainline
2014-10-20  Uros Bizjak  ubiz...@gmail.com

* varasm.c (const_alias_set): Remove.
(init_varasm_once): Remove initialization of const_alias_set.
(build_constant_desc): Do not set alias set to const_alias_set.

Backport from mainline
2014-10-14  Uros Bizjak  ubiz...@gmail.com

PR rtl-optimization/63475
* alias.c (true_dependence_1): Always use get_addr to extract
true address operands from x_addr and mem_addr.  Use extracted
address operands to check for references with alignment ANDs.
Use extracted address operands with find_base_term and
base_alias_check. For noncanonicalized operands call canon_rtx with
extracted address operand.
(write_dependence_1): Ditto.
(may_alias_p): Ditto.  Remove unused calls to canon_rtx.

Backport from mainline
2014-10-10  Uros Bizjak  ubiz...@gmail.com

PR rtl-optimization/63483
* alias.c (true_dependence_1): Do not exit early for MEM_READONLY_P
references when alignment ANDs are involved.
(write_dependence_p): Ditto.
(may_alias_p): Ditto.

Backport from mainline
2013-03-26  Richard Biener  rguent...@suse.de

* alias.c (find_base_term): Avoid redundant and not used recursion.
(base_alias_check): Get the initial base term from the caller.
(true_dependence_1): Compute and pass base terms to base_alias_check.
(write_dependence_p): Likewise.
(may_alias_p): Likewise.


Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/alias.c
branches/gcc-4_8-branch/gcc/dse.c
branches/gcc-4_8-branch/gcc/varasm.c


[Bug rtl-optimization/65135] [5 Regression] Performance regression in pic mode after r220674.

2015-02-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65135

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 CC||rth at gcc dot gnu.org
   Target Milestone|--- |5.0
Summary|Performance regression  in  |[5 Regression] Performance
   |pic mode after r220674. |regression  in pic mode
   ||after r220674.


[Bug tree-optimization/65136] [5 Regression] VRP inserts unnecessary constant copy in the loop

2015-02-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65136

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

  Known to work||4.9.2
   Target Milestone|--- |5.0
Summary|VRP inserts unnecessary |[5 Regression] VRP inserts
   |constant copy in the loop   |unnecessary constant copy
   ||in the loop

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
This is a regression from GCC 4.9.


[Bug go/65134] gccgo ignores the attribute constructor in a subdirectory

2015-02-20 Thread ian at airs dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65134

--- Comment #1 from Ian Lance Taylor ian at airs dot com ---
It's pretty ugly, but a workaround is to drop something like this into sub.go:

var AlwaysFalse bool
func init() {
if AlwaysFalse {
C.init()
}
}

The idea is to force in something that refers to the function that the compiler
and linker aren't smart enough to discard.


[Bug tree-optimization/65136] VRP inserts unnecessary constant copy in the loop

2015-02-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65136

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2015-02-20
Version|unknown |5.0
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
The issue is that VRP constant-propagates into the latch edge PHI argument
which makes it unable to coalesce across the latch edge.  It is also very
hard to undo this equivalence.

I have a patch.


[Bug target/63892] [5 Regression] gcc.dg/sibcall-3.c fails on darwin with -m32

2015-02-20 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63892

--- Comment #9 from Martin Liška marxin at gcc dot gnu.org ---
Thanks for cooperation, I'm going to bootstrap and run regression tests on
x86_64-linux-pc and I'm going to clone these tests too.

Martin

[Bug rtl-optimization/64557] get_addr in true_dependence_1 cannot handle VALUE inside an expr

2015-02-20 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64557

Uroš Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED
   Target Milestone|--- |4.8.5

--- Comment #6 from Uroš Bizjak ubizjak at gmail dot com ---
Fixed everywhere.

[Bug target/63892] [5 Regression] gcc.dg/sibcall-3.c fails on darwin with -m32

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63892

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
Thanks, looks reasonable.  That will hopefully render my #c5 patch undeeded.
Can you please bootstrap/regtest it on x86_64-linux (well, I can do that too
now).  Don't have access to darwin nor time to test it there, so will leave
that to others.


[Bug tree-optimization/65136] [5 Regression] VRP inserts unnecessary constant copy in the loop

2015-02-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65136

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||uros at gcc dot gnu.org

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
After the patch the assembly difference between 4.9 and 5 is

--- t.s.good2015-02-20 13:26:52.337186388 +0100
+++ t.s 2015-02-20 13:26:56.769235529 +0100
@@ -21,7 +21,7 @@
testl   %eax, %eax
jne .L3
xorl%eax, %eax
-   cmpw$-1, %di
+   cmpl$65535, %edi
sete%al
ret
.cfi_endproc

not sure why we prefer the bigger encoding now.


[Bug target/63892] [5 Regression] gcc.dg/sibcall-3.c fails on darwin with -m32

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63892

--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 34818
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34818action=edit
V499

And let's copy and adjust the sibcall-{3,4}.c testcases so that they aren't ICF
optimized, so that we also test what we originally meant to.


[Bug rtl-optimization/65135] [5 Regression] Performance regression in pic mode after r220674.

2015-02-20 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65135

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

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2015-02-20
 Ever confirmed|0   |1

--- Comment #3 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to Yuri Rumyantsev from comment #1)
 Created attachment 34814 [details]
 test-case to reproduce
 
 Need to compile with -O2 -m32 -fPIE -pie options.

Please provide your assembly code.


[Bug rtl-optimization/65135] [5 Regression] Performance regression in pic mode after r220674.

2015-02-20 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65135

--- Comment #2 from H.J. Lu hjl.tools at gmail dot com ---
The assembly code generates by r220674 is much shorter:

bar:
call__x86.get_pc_thunk.ax
addl$_GLOBAL_OFFSET_TABLE_, %eax
movlFPtr@GOTOFF(%eax), %edx
movlinc@GOTOFF(%eax), %ecx
leal(%edx,%ecx,4), %ecx
cmpl%ecx, FEOF@GOTOFF(%eax)
movl4(%esp), %ecx
cmovbF@GOTOFF(%eax), %edx
movl%ecx, (%edx)
movlinc@GOTOFF(%eax), %ecx
leal(%edx,%ecx,4), %edx
movl%edx, FPtr@GOTOFF(%eax)
ret

vs

bar:
call__x86.get_pc_thunk.dx
addl$_GLOBAL_OFFSET_TABLE_, %edx
pushl%edi
pushl%esi
movlFPtr@GOT(%edx), %ecx
pushl%ebx
movlinc@GOT(%edx), %ebx
movlFEOF@GOT(%edx), %edi
movl(%ecx), %eax
movl(%ebx), %esi
leal(%eax,%esi,4), %esi
cmpl%esi, (%edi)
jnb.L2
movlF@GOT(%edx), %eax
movl(%eax), %eax
.L2:
movl16(%esp), %edx
movl%edx, (%eax)
movl(%ebx), %edx
leal(%eax,%edx,4), %eax
movl%eax, (%ecx)
popl%ebx
popl%esi
popl%edi
ret
.sizebar, .-bar

Why doesn't it improve performance? Why does it hurt performance instead?


[Bug libstdc++/65122] std::vector doesn't honor element alignment

2015-02-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65122

--- Comment #12 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to Benoit Jacob from comment #11)
 (In reply to Richard Biener from comment #10)
  But ::operator new(std::size_t) could always return memory aligned for the
  most over-aligned type?  Thus our default new implementation could use
  posix_memalign (..., MIN (size, BIGGEST_ALIGNMENT), size)?
 
 The problem is there are lots of use cases for really high alignment: AVX
 brings uses of 32-byte alignment, and cache lines are typically = 64 byte
 aligned. So alignas has to support at least 64 or 128 byte alignment to
 support cache friendly code, and even without that, it would have to support
 at least 32 byte alignment for AVX vectorized code.
 
 Making all allocations that large would lead to substantial allocator slop.
 For example, jemalloc has a quantum of 8 or 16 byte depending on whether the
 arch is 32 or 64 bit, so increasing it to 32, 64 or 128 byte would be a big
 difference.

Though does it really matter in practice?  Tiny allocations would not suffer
because of the MIN (align, size), so the worst-case is max-align + 1
allocations.  Btw, you could as well try MIN (align, size  -size),
thus assume that the allocation size is N * alignof ().

  
  If the user provides its own ::new then he is on its own, of course
 
 I agree that's how I would like things to be. Unfortunately, the spec quote
 in comment 4, the storage is obtained by calling ::operator
 new(std::size_t), goes in the opposite direction, by requiring allocators
 to use the type-blind ::new , thereby losing useful type information such as
 the type's alignment. That's why I think that this is the spec's weak spot
 that might be questioned. but you're the expert, not me :)
 
  (and
  doing that and using posix_memalign in it would be a workaround for this
  issue?!).
 
 That could be a good compromise for many applications, that either don't
 care about minimizing memory usage, or don't do many tiny allocations.
 Unfortunately, my context here is a library (Eigen), so we can't make this
 decision for all our users.


[Bug testsuite/64158] [5 Regression] FAIL: gcc.dg/pr44194-1.c scan-rtl-dump dse1 global deletions = (2|3)

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64158

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 34816
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34816action=edit
gcc5-pr64158.patch

Untested fix.  Seem tcl is picky about the {}s, doesn't want cond1  cond2 
cond3, but instead { { cond1  cond2 }  cond3 }.  That is one of the pairs,
why is the second one needed is beyond my current understanding.
Tested just by replacing the various ! sometarget cases with ! x86_64-*-* and
checking whether they indeed made the test unsupported on my x86_64-linux.
s390, hppa and alpha replacement worked expectedly, for the powerpc case it was
enough to add one {} pair, for nvptx I had to add another one.


[Bug rtl-optimization/63475] Postreload CSE propagates aliased memory operand

2015-02-20 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63475

--- Comment #9 from uros at gcc dot gnu.org ---
Author: uros
Date: Fri Feb 20 12:04:21 2015
New Revision: 220854

URL: https://gcc.gnu.org/viewcvs?rev=220854root=gccview=rev
Log:
Backport from mainline
2015-01-22 Wei Mi w...@google.com

PR rtl-optimization/64557
* dse.c (record_store): Call get_addr for mem_addr.
(check_mem_read_rtx): Likewise.

Backport from mainline
2014-10-20  Uros Bizjak  ubiz...@gmail.com

* varasm.c (const_alias_set): Remove.
(init_varasm_once): Remove initialization of const_alias_set.
(build_constant_desc): Do not set alias set to const_alias_set.

Backport from mainline
2014-10-14  Uros Bizjak  ubiz...@gmail.com

PR rtl-optimization/63475
* alias.c (true_dependence_1): Always use get_addr to extract
true address operands from x_addr and mem_addr.  Use extracted
address operands to check for references with alignment ANDs.
Use extracted address operands with find_base_term and
base_alias_check. For noncanonicalized operands call canon_rtx with
extracted address operand.
(write_dependence_1): Ditto.
(may_alias_p): Ditto.  Remove unused calls to canon_rtx.

Backport from mainline
2014-10-10  Uros Bizjak  ubiz...@gmail.com

PR rtl-optimization/63483
* alias.c (true_dependence_1): Do not exit early for MEM_READONLY_P
references when alignment ANDs are involved.
(write_dependence_p): Ditto.
(may_alias_p): Ditto.

Backport from mainline
2013-03-26  Richard Biener  rguent...@suse.de

* alias.c (find_base_term): Avoid redundant and not used recursion.
(base_alias_check): Get the initial base term from the caller.
(true_dependence_1): Compute and pass base terms to base_alias_check.
(write_dependence_p): Likewise.
(may_alias_p): Likewise.


Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/alias.c
branches/gcc-4_8-branch/gcc/dse.c
branches/gcc-4_8-branch/gcc/varasm.c


[Bug testsuite/64158] [5 Regression] FAIL: gcc.dg/pr44194-1.c scan-rtl-dump dse1 global deletions = (2|3)

2015-02-20 Thread sch...@linux-m68k.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64158

--- Comment #3 from Andreas Schwab sch...@linux-m68k.org ---
It's a restriction of the selector expression parser.


[Bug c++/65132] diagnostics: missing: bitfield member cannot have an in-class initializer

2015-02-20 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65132

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

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-02-20
 CC||manu at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
Confirmed. 

Probably it is just a matter of calling cp_parser_constant_expression with the
right parameters to not emit errors, then checking after it returns that it
indeed parsed a constant-expression and give appropriate errors otherwise.

[Bug c++/65132] diagnostics: missing: bitfield member cannot have an in-class initializer

2015-02-20 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65132

--- Comment #2 from Manuel López-Ibáñez manu at gcc dot gnu.org ---
(In reply to Manuel López-Ibáñez from comment #1)
 Probably it is just a matter of calling cp_parser_constant_expression with
 the right parameters to not emit errors, then checking after it returns that
 it indeed parsed a constant-expression and give appropriate errors otherwise.

Which is what the C++ parser needs to do in general to avoid the terribly
user-unfriendly expected...before diagnostics, particularly the infamous 
'expected primary-expression before...' PR39858.

We really need at lot more people working on the C++ parser...

[Bug libstdc++/65122] std::vector doesn't honor element alignment

2015-02-20 Thread jacob.benoit.1 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65122

--- Comment #11 from Benoit Jacob jacob.benoit.1 at gmail dot com ---
(In reply to Richard Biener from comment #10)
 But ::operator new(std::size_t) could always return memory aligned for the
 most over-aligned type?  Thus our default new implementation could use
 posix_memalign (..., MIN (size, BIGGEST_ALIGNMENT), size)?

The problem is there are lots of use cases for really high alignment: AVX
brings uses of 32-byte alignment, and cache lines are typically = 64 byte
aligned. So alignas has to support at least 64 or 128 byte alignment to support
cache friendly code, and even without that, it would have to support at least
32 byte alignment for AVX vectorized code.

Making all allocations that large would lead to substantial allocator slop. For
example, jemalloc has a quantum of 8 or 16 byte depending on whether the arch
is 32 or 64 bit, so increasing it to 32, 64 or 128 byte would be a big
difference.

 
 If the user provides its own ::new then he is on its own, of course

I agree that's how I would like things to be. Unfortunately, the spec quote in
comment 4, the storage is obtained by calling ::operator new(std::size_t),
goes in the opposite direction, by requiring allocators to use the type-blind
::new , thereby losing useful type information such as the type's alignment.
That's why I think that this is the spec's weak spot that might be questioned.
but you're the expert, not me :)

 (and
 doing that and using posix_memalign in it would be a workaround for this
 issue?!).

That could be a good compromise for many applications, that either don't care
about minimizing memory usage, or don't do many tiny allocations.
Unfortunately, my context here is a library (Eigen), so we can't make this
decision for all our users.


[Bug libstdc++/65131] Integer overflow in .size() for std::vector

2015-02-20 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65131

--- Comment #8 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to Andrew Pinski from comment #1)
 The ABI says for all 32bit ABIs you cannot allocate more than half of the
 address space.

X32 can allocate more than 2GB via malloc and ILP32 on ARM64 may also be able
to.


[Bug c++/65137] New: wrong line for missing semicolon after expression

2015-02-20 Thread manu at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65137

Bug ID: 65137
   Summary: wrong line for missing semicolon after expression
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: manu at gcc dot gnu.org

int foo(int a)
{
  a++
  return 0;
}

gcc:

test.c:4:3: error: expected ‘;’ before ‘return’
   return 0;
   ^

clang:

test.c:3:6: error: expected ';' after expression
  a++
 ^
 ;

[Bug middle-end/65082] Wasted cycles when using a register based varible

2015-02-20 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65082

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

 Target|AVR-GCC |avr
   Priority|P3  |P5
 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2015-02-20
 Ever confirmed|0   |1

--- Comment #2 from Georg-Johann Lay gjl at gcc dot gnu.org ---
This cannot be reproduced with

register unsigned r4 asm (r4);
extern unsigned x;

void f (void)
{
r4 += x;
}


and compiled with

$ avr-gcc prog.c -S -Os


Neither with 4.8 nor 4.9 nor 5.0:  In all cases, the generated code is:

f:
lds r24,x
lds r25,x+1
add r4,r24
adc r5,r25
ret


(In reply to NickParker from comment #0)

 c code:
 -
 register uint16_t phaseAccPh  asm (r4);
 uint16_t phaseAccFr;
 
 phaseAccPh += phaseAccFr;

This is not C code that can be compiled.  Please read the bug reporting
instructions again.

https://gcc.gnu.org/bugs/#report


[Bug ipa/65028] [5 Regression] 450.soplex in SPEC CPU 2006 is miscompiled

2015-02-20 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65028

--- Comment #59 from Martin Jambor jamborm at gcc dot gnu.org ---
(In reply to Jan Hubicka from comment #36)
 We end up with algnment unkonwn instead of a. (did not managed to reproduce
 the wrong alignment here).  What about the following:

It is certainly better than what I had there before, except that
unless I read it wrong, I think there are two bugs:

 Index: ipa-cp.c
 ===
 --- ipa-cp.c  (revision 220789)
 +++ ipa-cp.c  (working copy)
 @@ -1409,6 +1409,60 @@ propagate_context_accross_jump_function
return ret;
  }
  
 +/* Decrease alignment info DEST to be at most CUR.  */
 +
 +static bool
 +decrease_alignment (ipa_alignment *dest, ipa_alignment cur)
 +{
 +  bool changed = false;
 +
 +  if (!cur.known)
 +return false;

I really think this should be return set_alignment_to_bottom (dest);

If some known alignment has been already propagated to DEST along a
different edge and now along the current edge an unknown alignment is
coming in, then the result value of the lattice must be BOTTOM and not
the previous alignment this code leaves in place.

 +  if (!dest-known)
 +{
 +  *dest = cur;
 +  return true;
 +}
 +  if (dest-align == cur.align
 +   dest-misalign == cur.misalign)
 +return false;
 +
 +  if (dest-align  cur.align)
 +{
 +  dest-align = cur.align;
 +  if (cur.align)
 + dest-misalign
 +   = dest-misalign % cur.align;
 +  changed = true;
 +}
 +  if (dest-align  (dest-misalign != (cur.misalign % dest-align)))
 +{
 +  int diff = abs (dest-misalign
 +   - (cur.misalign % dest-align));
 +  dest-align = MIN (dest-align, (unsigned)diff  - diff);
 +  if (dest-align)
 + dest-misalign
 +   = dest-misalign % dest-align;
 +  changed = true;
 +}
 +  return changed;
 +}
 +
 +/* Increase alignment info DEST to be at least CUR.  */
 +
 +static bool
 +increase_alignment (ipa_alignment *dest, ipa_alignment cur)
 +{
 +  if (!dest-known)
 +return false;

I think this condition always exits.  DEST is caller's CUR which was
read from jfunc-alignment which is always going to be unknown for
PASS_THROUGH and ANCESTOR jump functions at the moment.  Perhaps you
meant if (!cur.known) ?

 +  if (!cur.known || dest-align  cur.align)
 +{

again here, I think you meant !des-.known.

Apart from that, this is clearly an improvement, thanks.

[Bug rtl-optimization/65135] [5 Regression] Performance regression in pic mode after r220674.

2015-02-20 Thread ysrumyan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65135

--- Comment #4 from Yuri Rumyantsev ysrumyan at gmail dot com ---
This patch improves performance of almost all benchmarks in pic-mode for 32-bit
target, but we have the only huge degradation on benchmark from eembc1.1 suite.

I mentioned that the innermost loop has one more fill.

before r220674
.L8:
testl%esi, %esi
jne.L11
movl16(%esp), %eax
movl(%eax,%edx), %eax
cmpl$-1, %eax
je.L13
.L43:
movl4(%esp), %edi
leal0(,%eax,4), %edx
movl%ecx, %ebx
addl%edx, %edi
cmpl$101, %ecx
je.L41
leal1(%ebx), %ecx
movl8(%esp), %ebp
cmpl(%edi), %ebp
jne.L8

after r220674
.L6:
movl4(%esp), %ebx   --  redundant fill
testl%ebx, %ebx
jne.L9
movl20(%esp), %eax
movl(%eax,%edx), %eax
cmpl$-1, %eax
je.L11
.L42:
movl8(%esp), %edi
leal0(,%eax,4), %edx
movl%ecx, %ebx
addl%edx, %edi
cmpl$101, %ecx
je.L40
leal1(%ebx), %ecx
movl12(%esp), %esi
cmpl(%edi), %esi
jne.L6

The issue is that before the fix GOT-register is not considered for allocation
it to physical register.


[Bug sanitizer/65112] [5 Regression] -fsanitized=thread Fortran program crashes at startup

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65112

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
Can't reproduce, works just fine here.


[Bug target/65139] New: Improve register allocation for aarch64_*_sisd_or_intmode3 patterns

2015-02-20 Thread mkuvyrkov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65139

Bug ID: 65139
   Summary: Improve register allocation for
aarch64_*_sisd_or_intmode3 patterns
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mkuvyrkov at gcc dot gnu.org

Following discussion in http://thread.gmane.org/gmane.comp.gcc.patches/336162 ,
review usage of early clobber in aarch64_lshr_sisd_or_int_≤mode3,
aarch64_ashr_sisd_or_int_≤mode3, and, maybe, other patterns.  Convert them to
use (match_scratch) and compare quality of generated code between the two
approaches.

In theory, (match_scratch) should give more freedom to RA, but this requires
double-checking.

[Bug libstdc++/65122] std::vector doesn't honor element alignment

2015-02-20 Thread jacob.benoit.1 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65122

--- Comment #13 from Benoit Jacob jacob.benoit.1 at gmail dot com ---
(In reply to Richard Biener from comment #12)
 (In reply to Benoit Jacob from comment #11)
  (In reply to Richard Biener from comment #10)
   But ::operator new(std::size_t) could always return memory aligned for the
   most over-aligned type?  Thus our default new implementation could use
   posix_memalign (..., MIN (size, BIGGEST_ALIGNMENT), size)?
  
  The problem is there are lots of use cases for really high alignment: AVX
  brings uses of 32-byte alignment, and cache lines are typically = 64 byte
  aligned. So alignas has to support at least 64 or 128 byte alignment to
  support cache friendly code, and even without that, it would have to support
  at least 32 byte alignment for AVX vectorized code.
  
  Making all allocations that large would lead to substantial allocator slop.
  For example, jemalloc has a quantum of 8 or 16 byte depending on whether the
  arch is 32 or 64 bit, so increasing it to 32, 64 or 128 byte would be a big
  difference.
 
 Though does it really matter in practice?  Tiny allocations would not suffer
 because of the MIN (align, size), so the worst-case is max-align + 1
 allocations.  Btw, you could as well try MIN (align, size  -size),
 thus assume that the allocation size is N * alignof ().

Oh, I was missing the MIN (size, BIGGEST_ALIGNMENT) part of your proposal. So
you're right, that nicely takes care of tiny allocations. Correct also on MIN
(align, size  -size)   (though I have to trust your bit wizardry here) so that
neatly exploits the low bits of the size parameter to infer the alignof ---
sounds very good to me!


[Bug libstdc++/65122] std::vector doesn't honor element alignment

2015-02-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65122

--- Comment #14 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to Benoit Jacob from comment #13)
 (In reply to Richard Biener from comment #12)
  (In reply to Benoit Jacob from comment #11)
   (In reply to Richard Biener from comment #10)
But ::operator new(std::size_t) could always return memory aligned for 
the
most over-aligned type?  Thus our default new implementation could use
posix_memalign (..., MIN (size, BIGGEST_ALIGNMENT), size)?
   
   The problem is there are lots of use cases for really high alignment: AVX
   brings uses of 32-byte alignment, and cache lines are typically = 64 byte
   aligned. So alignas has to support at least 64 or 128 byte alignment to
   support cache friendly code, and even without that, it would have to 
   support
   at least 32 byte alignment for AVX vectorized code.
   
   Making all allocations that large would lead to substantial allocator 
   slop.
   For example, jemalloc has a quantum of 8 or 16 byte depending on whether 
   the
   arch is 32 or 64 bit, so increasing it to 32, 64 or 128 byte would be a 
   big
   difference.
  
  Though does it really matter in practice?  Tiny allocations would not suffer
  because of the MIN (align, size), so the worst-case is max-align + 1
  allocations.  Btw, you could as well try MIN (align, size  -size),
  thus assume that the allocation size is N * alignof ().
 
 Oh, I was missing the MIN (size, BIGGEST_ALIGNMENT) part of your proposal.
 So you're right, that nicely takes care of tiny allocations. Correct also on
 MIN (align, size  -size)   (though I have to trust your bit wizardry here)
 so that neatly exploits the low bits of the size parameter to infer the
 alignof --- sounds very good to me!

That trick of course requires you to not optimize your allocations manually
to omit tail padding in aggregates (or manually compute allocation sizes).
Or use

struct { avx512vector x; char c; } __attribute__((packed,aligned(64)));

which has alignment 64 and size 65... (of course arrays of such objects
are ill-defined)


[Bug libstdc++/65122] std::vector doesn't honor element alignment

2015-02-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65122

--- Comment #15 from Richard Biener rguenth at gcc dot gnu.org ---
Oh, and I wonder if there is an aligned realloc (though C++ doesn't define
sth like realloc and thus std::vector can't optimize the copy when
reallocating?!).  But for a C program using posix_memalign or any other such
facility means realloc is out of the question as well.


[Bug c++/65127] [5 Regression] internal compiler error: tree check: expected tree that contains 'decl minimal' structure, have 'addr_expr' in parsing_nsdmi, at cp/parser.c:18311

2015-02-20 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65127

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org,
   ||jason at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org ---
So it seems current_class_ptr is no longer just NULL or a PARM_DECL, but can be
also ADDR_EXPR of a PLACEHOLDER_EXPR.  Dunno if the right fix is
just
 bool
 parsing_nsdmi (void)
 {
   /* We recognize NSDMI context by the context-less 'this' pointer set up
  by the function above.  */
-   if (current_class_ptr  DECL_CONTEXT (current_class_ptr) == NULL_TREE)
+   if (current_class_ptr
+TREE_CODE (current_class_ptr) == PARM_DECL
+DECL_CONTEXT (current_class_ptr) == NULL_TREE)
 return true;
   return false;
 }
or something different.


[Bug target/65138] New: [5 Regression] testsuite ICEs on powerpc64le

2015-02-20 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65138

Bug ID: 65138
   Summary: [5 Regression] testsuite ICEs on powerpc64le
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: trippels at gcc dot gnu.org
  Host: powerpc64le-unknown-linux-gnu
Target: powerpc64le-unknown-linux-gnu
 Build: powerpc64le-unknown-linux-gnu

Running the testsuite on the new gcc2-2-power8.osuosl.org powerpc64le machine
shows:

FAIL: gcc.c-torture/execute/20050604-1.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (internal compiler error)
FAIL: gcc.c-torture/execute/20050604-1.c   -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects  (internal compiler error)
FAIL: gcc.c-torture/execute/20060420-1.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (internal compiler error)
FAIL: gcc.c-torture/execute/20060420-1.c   -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects  (internal compiler error)
FAIL: c-c++-common/torture/vector-compare-1.c   -O2 -flto
-fno-use-linker-plugin -flto-partition=none  (internal compiler error)
FAIL: c-c++-common/torture/vector-compare-1.c   -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects  (internal compiler error)
FAIL: gcc.dg/torture/pr45678-1.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (internal compiler error)
FAIL: gcc.dg/torture/pr45678-2.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (internal compiler error)
FAIL: c-c++-common/torture/vector-compare-1.c   -O2 -flto
-fno-use-linker-plugin -flto-partition=none  (internal compiler error)
FAIL: c-c++-common/torture/vector-compare-1.c   -O2 -flto -fuse-linker-plugin
-fno-fat-lto-objects  (internal compiler error)

These all have the same backtrace:
c-c++-common/torture/vector-compare-1.c: In function ‘main’:
c-c++-common/torture/vector-compare-1.c:108:8: internal compiler error: in
convert_move, at expr.c:315
 f0 = (vector (4, float)){(float)argc, 1.,  2.,  10.};
^
0x1030bf03 convert_move(rtx_def*, rtx_def*, int)
../../gcc/gcc/expr.c:315
0x103130a7 store_expr_with_bounds(tree_node*, rtx_def*, int, bool, tree_node*)
../../gcc/gcc/expr.c:5459
0x1031b5e7 expand_assignment(tree_node*, tree_node*, bool)
../../gcc/gcc/expr.c:5154
0x101cb33f expand_gimple_stmt_1
../../gcc/gcc/cfgexpand.c:3385
0x101cb33f expand_gimple_stmt
../../gcc/gcc/cfgexpand.c:3481
0x101d2dd7 expand_gimple_basic_block
../../gcc/gcc/cfgexpand.c:5470
0x101d5387 execute
../../gcc/gcc/cfgexpand.c:6088
Please submit a full bug report,

FAIL: gcc.dg/torture/vector-1.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (internal compiler error)
FAIL: gcc.dg/torture/vector-2.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none  (internal compiler error)

These two have a different backtrace:
gcc.dg/torture/vector-2.c:15:16: internal compiler error: in
expand_expr_real_1, at expr.c:9666
  ((int*)t)[0] = a;
^
0x103087c3 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
../../gcc/gcc/expr.c:9666
0x1031b8c3 expand_expr
../../gcc/gcc/expr.h:254
0x1031b8c3 expand_assignment(tree_node*, tree_node*, bool)
../../gcc/gcc/expr.c:4851
0x101cb33f expand_gimple_stmt_1
../../gcc/gcc/cfgexpand.c:3385
0x101cb33f expand_gimple_stmt
../../gcc/gcc/cfgexpand.c:3481
0x101d2dd7 expand_gimple_basic_block
../../gcc/gcc/cfgexpand.c:5470
0x101d5387 execute
../../gcc/gcc/cfgexpand.c:6088
Please submit a full bug report,
with preprocessed source if appropriate

[Bug ipa/65028] [5 Regression] 450.soplex in SPEC CPU 2006 is miscompiled

2015-02-20 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65028

Martin Jambor jamborm at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #60 from Martin Jambor jamborm at gcc dot gnu.org ---
(In reply to Jan Hubicka from comment #57)
 Martin, I just tested firefox with -march=native -flto -O3 and it still
 segfaults
 for me at movaps, so it seems that there is still some issue with the code :(
 (it happens with or withtout the propagation patch I posted)
 

Please have a look at my comments of the patch.  If that still does
not help, open a new bug and I will have a look.  This PR has had more
than it's fair share of comments already :-)


[Bug target/65139] Improve register allocation for aarch64_*_sisd_or_intmode3 patterns

2015-02-20 Thread ktkachov at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65139

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-02-20
 CC||ktkachov at gcc dot gnu.org
   Target Milestone|--- |6.0
 Ever confirmed|0   |1

--- Comment #1 from ktkachov at gcc dot gnu.org ---
Thanks for opening this, I was about to open this myself.
I guess this should be done for GCC 6


[Bug target/65138] [5 Regression] testsuite ICEs on powerpc64le

2015-02-20 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65138

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.0

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Only with -flto?  huh.


[Bug libstdc++/64695] [5 Regression] FAIL: libstdc++-prettyprinters/cxx11.cc

2015-02-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64695

--- Comment #5 from Jonathan Wakely redi at gcc dot gnu.org ---
Author: redi
Date: Fri Feb 20 14:40:00 2015
New Revision: 220871

URL: https://gcc.gnu.org/viewcvs?rev=220871root=gccview=rev
Log:
PR libstdc++/64695
* python/libstdcxx/v6/printers.py (StdTuplePrinter): Handle new
tuple layout.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/python/libstdcxx/v6/printers.py


[Bug libstdc++/64695] [5 Regression] FAIL: libstdc++-prettyprinters/cxx11.cc

2015-02-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64695

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #6 from Jonathan Wakely redi at gcc dot gnu.org ---
Fixed.

There are still some odd printer FAILs on ppc64 but they're unrelated:

FAIL: libstdc++-prettyprinters/libfundts.cc print ab
Python Exception type 'exceptions.RuntimeError' Cannot locate object file for
block.: ^M
skipping: Python Exception type 'exceptions.RuntimeError' Cannot locate
object file for block.: ^M
Python Exception type 'exceptions.RuntimeError' Cannot locate object file for
block.: ^M
skipping: Python Exception type 'exceptions.RuntimeError' Cannot locate
object file for block.: ^M


[Bug libstdc++/64467] [5 Regression] 28_regex/traits/char/isctype.cc and wchar_t/isctype.cc

2015-02-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64467

--- Comment #11 from Jonathan Wakely redi at gcc dot gnu.org ---
Is this fixed at r220682 ?


[Bug rtl-optimization/65135] [5 Regression] Performance regression in pic mode after r220674.

2015-02-20 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65135

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

   What|Removed |Added

 Status|WAITING |NEW
 CC||vmakarov at redhat dot com

--- Comment #5 from H.J. Lu hjl.tools at gmail dot com ---
After r220674, we have

movlz1.1821@GOTOFF(%ebp), %eax
...
movl%eax, %esi
...
movl%esi, 4(%esp)
...
.L6:
movl4(%esp), %ebx
testl%ebx, %ebx
jne.L9
movl20(%esp), %eax
movl(%eax,%edx), %eax
cmpl$-1, %eax
je.L11
.L42:
movl8(%esp), %edi
leal0(,%eax,4), %edx
movl%ecx, %ebx
addl%edx, %edi
cmpl$101, %ecx
je.L40
movl12(%esp), %esi
cmpl(%edi), %esi
leal1(%ebx), %ecx
jne.L6

vs

movlz1.1821@GOTOFF(%ebx), %esi
...
.L8:
testl%esi, %esi
jne.L11
movl16(%esp), %eax
movl(%eax,%edx), %eax
cmpl$-1, %eax
je.L13
.L43:
movl4(%esp), %edi
leal0(,%eax,4), %edx
movl%ecx, %ebx
addl%edx, %edi
cmpl$101, %ecx
je.L41
movl8(%esp), %ebp
cmpl(%edi), %ebp
leal1(%ebx), %ecx
jne.L8

RA puts GOT into %ebp and won't use it for this loop.


[Bug c++/65147] alignment of std::atomic object is not correct

2015-02-20 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65147

--- Comment #1 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Fri, 20 Feb 2015, alexey.lapshin at oracle dot com wrote:

 According to the documentation -
 https://gcc.gnu.org/wiki/Atomic/GCCMM/UnalignedPolicy alignment of atomic
 object should match it`s size.
 Alignment in the test case below does not match with documentation.

Not in itself a bug to fail to follow preliminary plans.  *But*:

 This behavior also differs from gcc. Gcc aligns 8-bytes objects to 8-bytes.

Differences between C and C++ atomics might be a bug - there may be intent 
for them to be ABI-compatible (although that didn't get implemented), 
unlike other aspects of the early plans you point to where intent changed 
over the course of implementation.


[Bug rtl-optimization/64317] [5 Regression] Ineffective allocation of PIC base register

2015-02-20 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64317

--- Comment #14 from Jeffrey A. Law law at redhat dot com ---
Just trying to help out where I can.   It's similar to the round robin use of
reload regs we've had in reload for a while.  THe idea was to hopefully have
reloaded values lying around in a useful place more often to improve
inheritance.


[Bug bootstrap/65150] New: bootstrap failure at r220878 on x86_64 darwin

2015-02-20 Thread howarth at bromo dot med.uc.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65150

Bug ID: 65150
   Summary: bootstrap failure at r220878 on x86_64 darwin
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
  Assignee: unassigned at gcc dot gnu.org
  Reporter: howarth at bromo dot med.uc.edu

Current gcc trunk at r220878 fails to bootstrap on x86_64-apple-darwin14 with
the error...

/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/./prev-gcc/xg++
-B/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/./prev-gcc/
-B/sw/lib/gcc5.0/x86_64-apple-darwin14.3.0/bin/ -nostdinc++
-B/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.3.0/libstdc++-v3/src/.libs
-B/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.3.0/libstdc++-v3/libsupc++/.libs

-I/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.3.0/libstdc++-v3/include/x86_64-apple-darwin14.3.0

-I/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.3.0/libstdc++-v3/include
 -I/sw/src/fink.build/gcc50-5.0.0-1000/gcc-5-20150220/libstdc++-v3/libsupc++
-L/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.3.0/libstdc++-v3/src/.libs
-L/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/prev-x86_64-apple-darwin14.3.0/libstdc++-v3/libsupc++/.libs
  -g -O2  -gtoggle -DIN_GCC-fno-exceptions -fno-rtti
-fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings
-Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic
-Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common
 -DHAVE_CONFIG_H -DGENERATOR_FILE -static-libstdc++ -static-libgcc -Wl,-no_pie
-o build/genmatch \
build/genmatch.o ../libcpp/libcpp.a ../libiberty/libiberty.a build/errors.o
build/vec.o build/hash-table.o .././libiberty/libiberty.a -lintl -L/sw/lib
-liconv 
Undefined symbols for architecture x86_64:
  std::type_info::__is_pointer_p() const, referenced from:
  vtable for __cxxabiv1::__si_class_type_info in
libstdc++.a(si_class_type_info.o)
  vtable for __cxxabiv1::__class_type_info in
libstdc++.a(class_type_info.o)
  vtable for std::type_info in libstdc++.a(tinfo.o)
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
Makefile:2606: recipe for target 'build/genmatch' failed
make[3]: *** [build/genmatch] Error 1
make[3]: Leaving directory
'/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir/gcc'
Makefile:4408: recipe for target 'all-stage2-gcc' failed
make[2]: *** [all-stage2-gcc] Error 2
make[2]: Leaving directory '/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir'
Makefile:20723: recipe for target 'stage2-bubble' failed
make[1]: *** [stage2-bubble] Error 2
make[1]: Leaving directory '/sw/src/fink.build/gcc50-5.0.0-1000/darwin_objdir'
Makefile:20918: recipe for target 'bootstrap' failed
make: *** [bootstrap] Error 2


[Bug c++/65149] unaligned atomic object causes Bus Error on SPARC

2015-02-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65149

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Related to PR 62259 -- maybe even a dup.


[Bug fortran/64432] [5 Regression] SYSTEM_CLOCK(COUNT_RATE=rate) wrong result for integer(4)::rate

2015-02-20 Thread anlauf at gmx dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64432

--- Comment #27 from Harald Anlauf anlauf at gmx dot de ---
(In reply to Jerry DeLisle from comment #26)
 Created attachment 34819 [details]
 Updated full patch.
 
 Revised to fix error shown in Comment #22

The new patch does indeed fix the error in comment #22,
and it also works for me (e.g. for the original issue).

Thanks,
Harald


[Bug libstdc++/64467] [5 Regression] 28_regex/traits/char/isctype.cc and wchar_t/isctype.cc

2015-02-20 Thread hp at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64467

Hans-Peter Nilsson hp at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #12 from Hans-Peter Nilsson hp at gcc dot gnu.org ---
(In reply to Jonathan Wakely from comment #11)
 Is this fixed at r220682 ?

I think we can close this yes, as long as it's ok to have newline as isblank.


[Bug debug/58315] [4.8/4.9/5 Regression] Excessive memory use with -g

2015-02-20 Thread aldyh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58315

Aldy Hernandez aldyh at gcc dot gnu.org changed:

   What|Removed |Added

 CC||aoliva at gcc dot gnu.org,
   ||rth at gcc dot gnu.org

--- Comment #14 from Aldy Hernandez aldyh at gcc dot gnu.org ---
I'm not very familiar with the var tracking code, but one thing I see odd here
is a ton of similar var_location notes attached to each instruction (well, not
each instruction, but a lot of the instructions are affected while generating
code for test01, test02, test03, test04, etc).

I see an instruction like this:

(insn:TI 52195 52199 83288 6386 (set (mem/c:DI (plus:DI (reg/f:DI 6 bp)
(const_int -25880 [0x9ae8])) [125 %sfp+-25864 S8
A64])
(reg:DI 0 ax)) 89 {*movdi_internal}
 (expr_list:REG_DEAD (reg:DI 0 ax)
(nil)))
(jump_insn 83288 52195 83289 6386 (set (pc)
(label_ref 34659)) 653 {jump}
 (nil)
 - 34659)

Followed by over 1000 var_location notes:

(note 11489581 83289 11489582 (var_location this(0x7fffe7223360)  (plus:DI
(reg/f:DI 6 bp)
(const_int -21808 [0xaad0]))) NOTE_INSN_VAR_LOCATION)
(note 11489582 11489581 11489583 (var_location this(0x7fffe8d7dc60)  (plus:DI
(reg/f:DI 6 bp)
(const_int -25200 [0x9d90]))) NOTE_INSN_VAR_LOCATION)
(note 11489583 11489582 11489584 (var_location this(0x7fffe72236c0)  (plus:DI
(reg/f:DI 6 bp)
(const_int -21856 [0xaaa0]))) NOTE_INSN_VAR_LOCATION)
(note 11489584 11489583 11489585 (var_location this(0x7fffe7223bd0)  (plus:DI
(reg/f:DI 6 bp)
(const_int -6576 [0xe650]))) NOTE_INSN_VAR_LOCATION)
(note 11489585 11489584 11489586 (var_location this(0x7fffe7223cf0)  (plus:DI
(reg/f:DI 6 bp)
(const_int -21872 [0xaa90]))) NOTE_INSN_VAR_LOCATION)
(note 11489586 11489585 11489587 (var_location this(0x7fffe941e090)  (plus:DI
(reg/f:DI 6 bp)
(const_int -25136 [0x9dd0]))) NOTE_INSN_VAR_LOCATION)

etc
etc etc
.

Notice all of them are the this pointer, but I have hacked the RTL dumping
code to also print the address of the DECL to show that every this is
actually a different instance.

This looks suspect.  Anyone have a clue, otherwise I'm going to continue
banging my head against a wall here?


[Bug c/65145] size of atomic object is not correct

2015-02-20 Thread jsm28 at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65145

Joseph S. Myers jsm28 at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from Joseph S. Myers jsm28 at gcc dot gnu.org ---
Not a bug; there is no intent to increase object size with _Atomic.


[Bug fortran/65141] ISO_10646 constant parameters convert kind when used with substring references

2015-02-20 Thread jvdelisle at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65141

Jerry DeLisle jvdelisle at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-02-20
 CC||jvdelisle at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Jerry DeLisle jvdelisle at gcc dot gnu.org ---
Confirmed and the problem is in the front end side.


[Bug libstdc++/64467] [5 Regression] 28_regex/traits/char/isctype.cc and wchar_t/isctype.cc

2015-02-20 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64467

--- Comment #13 from Jonathan Wakely redi at gcc dot gnu.org ---
In the POSIX (i.e. C) locale it should only be space and tab, but
implementing that when the target only has 8-bits for the ctype mask and
doesn't have a blank class is very difficult.

For other locales it's OK for newline to be in the blank class.


[Bug c/65145] size of atomic object is not correct

2015-02-20 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65145

--- Comment #1 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Fri, 20 Feb 2015, alexey.lapshin at oracle dot com wrote:

 The size of atomic object does not match with documentation -
 https://gcc.gnu.org/wiki/Atomic/GCCMM/UnalignedPolicy specifically : 

That's not documentation.  It's an early description of intent that does 
not correspond to what was actually implemented (note the future tense in 
the words you quote, and the last edited date a year before I added 
_Atomic support to trunk based on Andrew's work).  In general, old wiki 
pages are left around as they may help understand archived development 
discussions.


[Bug target/65109] [5 Regression] r220674 causes FAIL: gcc.target/powerpc/ppc64-abi-1.c execution test

2015-02-20 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65109

--- Comment #10 from Martin Sebor msebor at gcc dot gnu.org ---
Created attachment 34821
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34821action=edit
Patch to make the test less subject to register clobbering.

FWIW, I agree with Richard that the test is overly fragile.  I have attached
another patch that attempts to make the test more reliable by splitting up each
test function into two, one that does nothing but save the volatile registers
(thus reducing the risk of them getting clobbered by other code), and another
that then verifies their values.


[Bug c/65146] alignment of _Atomic structure member is not correct

2015-02-20 Thread alexey.lapshin at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65146

--- Comment #2 from Alexey Lapshin alexey.lapshin at oracle dot com ---
if alignment of atomic object less then it`s size then it could not be
lock-free on x86 32. If that object would split across cache lines then the
operation would not be atomic.

At the same time compiler reports for this 8-bytes size object:

__atomic_always_lock_free(sizeof(obj2.ao), obj2.ao) TRUE 
atomic_is_lock_free( obj2.ao ) TRUE

so it looks like lock-free atomic operation on this 4-bytes aligned data object
could fail to be atomic.


[Bug bootstrap/65150] bootstrap failure at r220878 on x86_64 darwin

2015-02-20 Thread howarth at bromo dot med.uc.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65150

--- Comment #1 from howarth at bromo dot med.uc.edu ---
Failed for bootstrap using...

 ../gcc-5-20150220/configure --prefix=/sw --prefix=/sw/lib/gcc5.0
--mandir=/sw/share/man --infodir=/sw/lib/gcc5.0/info
--enable-languages=c,c++,fortran,lto,objc,obj-c++,java --with-gmp=/sw
--with-libiconv-prefix=/sw --with-isl=/sw --with-mpc=/sw --with-system-zlib
--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib
--program-suffix=-fsf-5.0


[Bug c/65146] alignment of _Atomic structure member is not correct

2015-02-20 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65146

--- Comment #1 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Fri, 20 Feb 2015, alexey.lapshin at oracle dot com wrote:

 Alignment of single _Atomic object match with documentation :
 https://gcc.gnu.org/wiki/Atomic/GCCMM/UnalignedPolicy . 

That's not documentation.  Implementation differences from early plans are 
not a bug.  Differences in alignment are only bugs if they mean atomic 
operations *fail to be atomic*.


[Bug c/65145] size of atomic object is not correct

2015-02-20 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65145

--- Comment #3 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Fri, 20 Feb 2015, alexey.lapshin at oracle dot com wrote:

 Hi Joseph,
 
 Could you help me with a link to the correct description of atomic ABI,
 which in fact used by gcc/g++, please ?

I don't believe it's documented, but I think the general rule for C is: if 
a type's size is 1, 2, 4, 8, 16, its alignment is increased by _Atomic to 
that of the atomic integer type of that size, which is the same as that of 
the non-atomic integer type unless increased by 
TARGET_ATOMIC_ALIGN_FOR_MODE; the size is never increased by _Atomic, and 
alignment of types not of those sizes is unchanged.  If the code differs, 
likely the code should take precedence over that description.  (But of 
course if a type is under-aligned for the instructions used to operate on 
it, there's a bug, whether in the alignment or in the instruction choice.)


[Bug target/65109] [5 Regression] r220674 causes FAIL: gcc.target/powerpc/ppc64-abi-1.c execution test

2015-02-20 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65109

--- Comment #11 from Jeffrey A. Law law at redhat dot com ---
Martin,

Looks good to me.  Can you write a quick ChangeLog for the patch, then post it
to gcc-patc...@gcc.gnu.org

Something like


[Bug c/65145] size of atomic object is not correct

2015-02-20 Thread alexey.lapshin at oracle dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65145

--- Comment #2 from Alexey Lapshin alexey.lapshin at oracle dot com ---
Hi Joseph,

Could you help me with a link to the correct description of atomic ABI,
which in fact used by gcc/g++, please ?

Thank you, Alexey.


[Bug target/65109] [5 Regression] r220674 causes FAIL: gcc.target/powerpc/ppc64-abi-1.c execution test

2015-02-20 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65109

--- Comment #12 from Jeffrey A. Law law at redhat dot com ---
Martin,

Looks good to me.  Can you write a quick ChangeLog for the patch, then post it
to gcc-patc...@gcc.gnu.org

Something like

PR target/65109
* gcc.target/powerpc/ppc64-abi-1.c: Split test functions into two
parts.  One to save registers, the other to verify the registers
have the right values.  Save register state into static data rather
than on the stack.


  1   2   >