[Bug c++/63201] Full specialization of a member variable template of a class template does not work

2014-09-08 Thread ville.voutilainen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63201

Ville Voutilainen ville.voutilainen at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-09-08
 Ever confirmed|0   |1


[Bug sanitizer/61897] sanitizer internal compiler error: in build2_stat, at tree.c:4160

2014-09-08 Thread y.gribov at samsung dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61897

Yury Gribov y.gribov at samsung dot com changed:

   What|Removed |Added

 CC||y.gribov at samsung dot com

--- Comment #3 from Yury Gribov y.gribov at samsung dot com ---
Tom, could you close if works for you?


[Bug middle-end/62140] [GCC-4.10.0][ASAN] ICE: : in build2_stat, at tree.c:4265

2014-09-08 Thread y.gribov at samsung dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62140

--- Comment #5 from Yury Gribov y.gribov at samsung dot com ---
Sabrina, could you close if works for you?


[Bug bootstrap/63204] New: gtype-desc.c:887:40: error: 'struct loop' has no member named 'former_header' breaks bootstrap

2014-09-08 Thread mikpelinux at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63204

Bug ID: 63204
   Summary: gtype-desc.c:887:40: error: 'struct loop' has no
member named 'former_header' breaks bootstrap
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mikpelinux at gmail dot com

Attempting to bootstrap latest gcc-5 snapshot (20140907, aka r215005) fails
with:

g++ -c   -g -DIN_GCC-fno-exceptions -fno-rtti -fasynchronous-unwind-tables
-W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format
-Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long
-Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I.
-I/mnt/scratch/gcc-5-20140907/gcc -I/mnt/scratch/gcc-5-20140907/gcc/.
-I/mnt/scratch/gcc-5-20140907/gcc/../include
-I/mnt/scratch/gcc-5-20140907/gcc/../libcpp/include 
-I/mnt/scratch/gcc-5-20140907/gcc/../libdecnumber
-I/mnt/scratch/gcc-5-20140907/gcc/../libdecnumber/dpd -I../libdecnumber
-I/mnt/scratch/gcc-5-20140907/gcc/../libbacktrace-o gtype-desc.o -MT
gtype-desc.o -MMD -MP -MF ./.deps/gtype-desc.TPo gtype-desc.c
In file included from /mnt/scratch/gcc-5-20140907/gcc/ggc.h:34:0,
 from /mnt/scratch/gcc-5-20140907/gcc/hash-table.h:199,
 from /mnt/scratch/gcc-5-20140907/gcc/hash-set.h:24,
 from /mnt/scratch/gcc-5-20140907/gcc/tree-core.h:24,
 from /mnt/scratch/gcc-5-20140907/gcc/tree.h:23,
 from gtype-desc.c:30:
gtype-desc.c: In function 'void gt_ggc_mx_loop(void*)':
gtype-desc.c:887:40: error: 'struct loop' has no member named 'former_header'
   gt_ggc_m_15basic_block_def ((*x).former_header);
^
./gtype-desc.h:829:7: note: in definition of macro 'gt_ggc_m_15basic_block_def'
   if (X != NULL) gt_ggc_mx_basic_block_def (X);\
   ^
gtype-desc.c:887:40: error: 'struct loop' has no member named 'former_header'
   gt_ggc_m_15basic_block_def ((*x).former_header);
^
./gtype-desc.h:829:45: note: in definition of macro
'gt_ggc_m_15basic_block_def'
   if (X != NULL) gt_ggc_mx_basic_block_def (X);\
 ^
gtype-desc.c: In function 'void gt_pch_nx_loop(void*)':
gtype-desc.c:4070:40: error: 'struct loop' has no member named 'former_header'
   gt_pch_n_15basic_block_def ((*x).former_header);
^
./gtype-desc.h:1733:7: note: in definition of macro
'gt_pch_n_15basic_block_def'
   if (X != NULL) gt_pch_nx_basic_block_def (X);\
   ^
gtype-desc.c:4070:40: error: 'struct loop' has no member named 'former_header'
   gt_pch_n_15basic_block_def ((*x).former_header);
^
./gtype-desc.h:1733:45: note: in definition of macro
'gt_pch_n_15basic_block_def'
   if (X != NULL) gt_pch_nx_basic_block_def (X);\
 ^
gtype-desc.c: In function 'void gt_pch_p_4loop(void*, void*,
gt_pointer_operator, void*)':
gtype-desc.c:7312:16: error: 'struct loop' has no member named 'former_header'
 op (((*x).former_header), cookie);
^
make[3]: *** [gtype-desc.o] Error 1
make[3]: Leaving directory `/mnt/scratch/objdir50/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/mnt/scratch/objdir50'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/mnt/scratch/objdir50'
make: *** [bootstrap] Error 2

So far I've gotten this both on armv5tel-linux-gnueabi and x86_64-pc-linux-gnu.

This is a regression from last week's snapshot.


[Bug tree-optimization/63202] tree vectorizer does not make use of alignment information from VRP/CCP

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63202

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 guess the cast prevents this from being handled by maybe_set_nonzero_bits,
guess it could be handled there.

That said, it is extremely fragile, because we insert the range and non-zero
bits info on SSA_NAMEs and have this single exception for function parameters
if they aren't used anywhere before the __builtin_unreachable check.  As soon
as e.g. the function is inlined, there might be more uses and the info can be
lost.
Richard didn't want to disable forward propagation if some SSA_NAME holds a
useful range info which the to be propagated SSA_NAME does not hold (in that
case, we'd keep a new SSA_NAME with the more precise range/non-zero info around
and be able to stick it somewhere).
The reason why we have __builtin_assume_aligned defined the way it is is that
there is always an SSA_NAME to stick that info to, it is clear in which part of
the function the condition is true.


[Bug lto/61886] [4.8/4.9/5 Regression] LTO breaks fread with _FORTIFY_SOURCE=2

2014-09-08 Thread rguenther at suse dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61886

--- Comment #10 from rguenther at suse dot de rguenther at suse dot de ---
On Mon, 8 Sep 2014, hubicka at ucw dot cz wrote:

 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61886
 
 --- Comment #9 from Jan Hubicka hubicka at ucw dot cz ---
  The issue is that we resolve aliases in a bogus way, not warning/error
  stuff.
 
 Those are not aliases, but duplicated declarations that are supposed to not
 exist since one declaration rule was introduced in early 4.x series.
 It is bug that frotnend allowed creating them and made it part of the fortify
 interface. I still think it is better to resolve those early and start
 rejecting
 any other uses than the fortify case...

Well - whatever makes the fortify case work as expected works for me.
Note that it would be nice to fix this on the 4.9 branch as well.


[Bug ipa/63196] [5.0 regression] FAIL: g++.dg/torture/pr57140.C -O3 -fomit-frame-pointer (internal compiler error)

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63196

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org
   Target Milestone|--- |5.0

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


[Bug ipa/63196] [5.0 regression] FAIL: g++.dg/torture/pr57140.C -O3 -fomit-frame-pointer (internal compiler error)

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63196

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
Ok, so the issue here is that we are copying a function during inline transform
whose loops state needs fixups.  That's undesirable.


[Bug bootstrap/63204] gtype-desc.c:887:40: error: 'struct loop' has no member named 'former_header' breaks bootstrap

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63204

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-09-08
   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 ---
Mine.


[Bug tree-optimization/63202] tree vectorizer does not make use of alignment information from VRP/CCP

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63202

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
Well, as with restrict it would be nice to be able to annotate the memory
references themselves with alignment info.

Btw, a possibility would be to insert assume_aligned calls into the IL
from the

 if (p  15)
   __builtin_unreachable ();

pattern and remove the test  __builtin_unreachable ().

Of course quite special and breaks down for assume (!(p  15)  a == b).

As Jakub said, the testcase can be handled with the existing code as
there is no use of p before the conditional.

Note that there isn't an extra loop for the unaligned case but
the extra loop is for the case where there is aliasing between
p and b.

But yes, we fail to use aligned loads here (but movdqu doesn't have a
penalty for that).


[Bug middle-end/63200] [5.0 Regression] FAIL: gcc.dg/tls/opt-11.c execution test

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63200

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||wrong-code
   Target Milestone|--- |5.0


[Bug target/63195] [5.0 regression] stage3 build/gengtype miscompiled

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63195

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.0


[Bug libstdc++/63199] Inserting std::wregex to std::vector loses some std::wregex values

2014-09-08 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63199

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-09-08
   Assignee|unassigned at gcc dot gnu.org  |timshen at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org ---
Tim has found the problem:
https://gcc.gnu.org/ml/libstdc++/2014-09/msg00020.html


[Bug c++/63198] decltype in template function declaration yields spurious error

2014-09-08 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63198

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||rejects-valid
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-09-08
Summary|[c++1y] decltype in |decltype in template
   |template function   |function declaration yields
   |declaration yields spurious |spurious error
   |error   |
 Ever confirmed|0   |1

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
struct X { using t1 = int; };
struct Y { X operator=(const Y); } y;
template typename T void f1(decltype(y = y)::t1);

$ g++ -std=c++11 -c d.cc
d.cc:3:50: error: variable or field ‘f1’ declared void
 template typename T void f1(decltype(y = y)::t1);
  ^

Using -std=c++1y is not necessary, this doesn't use any C++14 features.

The error only happens if f1 is a template, and only seems to happen if the
decltype expression uses the assignment operator, not any other expression I
tried.

[Bug rtl-optimization/63191] [4.8/4.9/5 Regression] 32-bit gcc uses excessive memory during dead store elimination with -fPIC

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63191

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Target||i?86-*-*
 Status|UNCONFIRMED |NEW
   Keywords||memory-hog
   Last reconfirmed||2014-09-08
 CC||rth at gcc dot gnu.org
 Blocks||47344
 Ever confirmed|0   |1
Summary|32-bit gcc uses excessive   |[4.8/4.9/5 Regression]
   |memory during dead store|32-bit gcc uses excessive
   |elimination with -fPIC  |memory during dead store
   ||elimination with -fPIC
   Target Milestone|--- |4.8.4

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Confirmed.  Possibly excessive value_rtx expansion from dse.c:canon_address.

The testcase is a function with a single basic-block and 3 stores
(the static initializer function) with the pattern

  D.94947 = (struct Z *) Zs;
  D.94947-x1_ = Xs1[0];
  D.94947-x2_ = 1;
  D.94947-x3_ = 1;
  temp.20397 = D.94947 + 12;
  temp.20397-x1_ = Xs90[0];
  temp.20397-x2_ = 2;
  temp.20397-x3_ = 1;
...
  temp.30587 = temp.30586 + 12;
  temp.30587-x1_ = Xs611[0];
  temp.30587-x2_ = 2;
  temp.30587-x3_ = 1;

thus groups of three stores followed by an address adjustment.  The above
is from a GCC 4.3 IL dump.

The GCC 4.9 IL dump shows

  MEM[(struct Z *)Zs].x1_ = Xs1;
  MEM[(struct Z *)Zs].x2_ = 1;
  MEM[(struct Z *)Zs].x3_ = 1;
  MEM[(struct Z *)Zs + 12B].x1_ = Xs90;
  MEM[(struct Z *)Zs + 12B].x2_ = 2;
  MEM[(struct Z *)Zs + 12B].x3_ = 1;
  MEM[(struct Z *)Zs + 24B].x1_ = Xs91;
  MEM[(struct Z *)Zs + 24B].x2_ = 2;
  MEM[(struct Z *)Zs + 24B].x3_ = 1;
...
  MEM[(struct Z *)Zs + 122292B].x1_ = Xs611;
  MEM[(struct Z *)Zs + 122292B].x2_ = 2;
  MEM[(struct Z *)Zs + 122292B].x3_ = 1;

which causes each store to be expanded via st like

(insn 71298 71297 71299 2 (set (reg:SI 40822)
(const:SI (unspec:SI [
(symbol_ref:SI (_ZL2Zs) [flags 0x2]  var_decl
0x75c4a098 Zs)
] UNSPEC_GOTOFF))) t.C:5 -1
 (nil))
(insn 71299 71298 71300 2 (set (mem/c:SI (plus:SI (plus:SI (reg:SI 3 bx)
(reg:SI 40822))
(const_int 122216 [0x1dd68])) [4 MEM[(struct Z *)Zs +
122208B].x3_+0 S4 A64])
(const_int 1 [0x1])) t.C:5 -1
 (nil))

I suppose lowering PIC addresses somewhere before RTL expansion (and
CSEing the addresses) would help here.  Lowering as in not treating
them as is_gimple_min_invariant.

With 4.3 we have a single address load for Zs (but of course we retain
the individual stored addresses loads - thus still very many PIC addresses
in this function).

Why is CSE not able to CSE the UNSPEC_GOTOFF addresses?  Does it not do
it because of the (const:SI ...) wrapping (as in, not profitable)?  Or is
it confused about the other intermediate UNSPEC_GOTOFF uses?

That said, cse1 should be able to turn the RTL into sth equivalent to
what 4.3 produced.


[Bug rtl-optimization/63191] [4.8/4.9/5 Regression] 32-bit gcc uses excessive memory during dead store elimination with -fPIC

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63191

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

int a, b, c, d;
struct X { int a; int b; void *p; } z[4];
void foo (void)
{
  z[0].a = 1;
  z[0].b = 2;
  z[0].p = a;
  z[1].a = 1;
  z[1].b = 2;
  z[1].p = b;
  z[2].a = 1;
  z[2].b = 2;
  z[2].p = c;
  z[3].a = 1;
  z[3].b = 2;
  z[3].p = d;
}

CSEing of the GOT load of z works.


[Bug target/63190] Assembler errors when building md5 code from fbb on aarch64

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63190

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

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

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


[Bug tree-optimization/63189] [4.8 Regression] Incorrect results from trivial loop when optimized with O3 or O2+tree vectorization

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63189

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||wrong-code
 CC||congh at gcc dot gnu.org
   Target Milestone|--- |4.8.4


[Bug bootstrap/63188] [5 Regression] r214954 breaks bootstrap on x86_64-apple-darwin13

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63188

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |5.0


[Bug middle-end/63186] [4.9/5 Regression] Undefined .L* symbols because of fnsplit

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63186

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.9.2


[Bug c++/63203] Self-initialization of reference not diagnosed if it occurs within a loop

2014-09-08 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63203

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-09-08
 Ever confirmed|0   |1

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
IMHO we should have a specific check for self-initialized references, instead
of relying on the compiler to identify the use of an uninitialized variable in
later code.

Doing self-init for references to silence uninitialized warnings makes no
sense, because you can't re-bind the reference later, so it will always stay
uselessly bound to itself.


[Bug fortran/63205] New: [OOP] Wrongly rejects type = class (for identical declared type)

2014-09-08 Thread burnus at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63205

Bug ID: 63205
   Summary: [OOP] Wrongly rejects  type = class (for identical
declared type)
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: burnus at gcc dot gnu.org
CC: dominiq at lps dot ens.fr, janus at gcc dot gnu.org
Depends on: 57530

+++ This bug was initially created as a clone of Bug #57530 +++

PR 57530 comment #3:
 Created attachment 30262 [details]
 Draft patch - does not fully work, yet
 
 Currently fails for
   x = func1()
 in assign_11.f90

PR 57530 comment #8:
 The original test case (cf. PR 57530 comment 0) is now solved.
 
 However, only type = class is handled. Still missing is type = class,
 where CLASS is a (coarray) scalar or (coarray) array variable, function or
 an array constructor. See also PR 57530 comment 3.


[Bug c++/63203] Self-initialization of reference not diagnosed if it occurs within a loop

2014-09-08 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63203

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org ---
I tried something like this:

--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -6101,6 +6101,12 @@ initialize_local_var (tree decl, tree init)
 -Wno-init-self works (c++/34772).  */
  gcc_assert (TREE_OPERAND (init, 0) == decl);
  DECL_INITIAL (decl) = TREE_OPERAND (init, 1);
+
+  if (warn_init_self  TREE_CODE (type) == REFERENCE_TYPE
+   TREE_OPERAND (init, 1) == decl)
+warning_at (DECL_SOURCE_LOCATION (decl),
+OPT_Winit_self,
+Reference %qD is initialized with itself, decl);
}
   else
{

but the TREE_OPERAND (init, 1) == decl condition is false and I'm not sure how
to fix it.


[Bug tree-optimization/61743] [5 Regression] Complete unroll is not happened for loops with short upper bound

2014-09-08 Thread ysrumyan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61743

--- Comment #10 from Yuri Rumyantsev ysrumyan at gmail dot com ---
Richard,

Do you have any progress?

Thanks.

2014-08-13 12:35 GMT+04:00 rguenth at gcc dot gnu.org
gcc-bugzi...@gcc.gnu.org:
 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61743

 --- Comment #9 from Richard Biener rguenth at gcc dot gnu.org ---
 (In reply to Yuri Rumyantsev from comment #8)
 Richard,

 I tested both proposed fixes and i turned out that the first one is
 preferable since performance of benchmark came back. Note that hoisting 2nd
 vrp pass gave us another 14% slowdown but I did not investigate it.

 Should I tested your fix or you do it yourself?

 I'd like to explore on how to make it a little more generic, it's a very
 special hack as-is.

 Thanks.

 --
 You are receiving this mail because:
 You reported the bug.


[Bug tree-optimization/62012] Loop is not vectorized after function inlining (SCEV)

2014-09-08 Thread ysrumyan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62012

--- Comment #2 from Yuri Rumyantsev ysrumyan at gmail dot com ---
Any updates?

Thanks.


[Bug tree-optimization/61743] [5 Regression] Complete unroll is not happened for loops with short upper bound

2014-09-08 Thread rguenther at suse dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61743

--- Comment #11 from rguenther at suse dot de rguenther at suse dot de ---
On Mon, 8 Sep 2014, ysrumyan at gmail dot com wrote:

 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61743
 
 --- Comment #10 from Yuri Rumyantsev ysrumyan at gmail dot com ---
 Richard,
 
 Do you have any progress?

No, I didn't yet have time to get back to this.


[Bug tree-optimization/62012] Loop is not vectorized after function inlining (SCEV)

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62012

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2014-09-08
 Ever confirmed|0   |1

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
So it's independend of LTO.

Confirmed.  We have

  _28 = MEM[(struct Array *)fa + 256B].a[0] + _3;
  *_28 = u_23;

which SCEV messes up because it ends up with

(instantiate_scev
  (instantiate_below = 4)
  (evolution_loop = 1)
  (chrec = MEM[(struct Array *)fa + 256B].a[0])
  (res = MEM[(struct Array *)fa + 256B].a[0]))
(instantiate_scev
  (instantiate_below = 4)
  (evolution_loop = 1)
  (chrec = {(long unsigned int) first_6(D) * 4, +, 4}_1)
  (res = {(long unsigned int) first_6(D) * 4, +, 4}_1))
(set_scalar_evolution
  instantiated_below = 4
  (scalar = _13)
  (scalar_evolution = {MEM[(struct Array *)fa + 256B].a[(sizetype)
first_6(D)], +, 4}_1))
)
failed: evolution of base is not affine.

Not sure why it thinks that.

Btw, on trunk we now vectorize this just fine probably because of the fix
for PR63148 which avoids moving first_6 * 4 inside the array-ref and we
get

  (scalar_evolution = {MEM[(struct Array *)fa + 256B].a[0] + (sizetype)
((long unsigned int) first_6(D) * 4), +, 4}_1))
)
success.

instead.

So - can you re-check please?


[Bug middle-end/62140] [GCC-4.10.0][ASAN] ICE: : in build2_stat, at tree.c:4265

2014-09-08 Thread sabrinadfs at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62140

--- Comment #6 from Sabrina Souto sabrinadfs at gmail dot com ---
I checked with the current code in trunk and the test is passing, did you fixed
it?
What do you mean by close? Change the status for RESOLVED?


(In reply to Yury Gribov from comment #5)
 Sabrina, could you close if works for you?


[Bug middle-end/62140] [GCC-4.10.0][ASAN] ICE: : in build2_stat, at tree.c:4265

2014-09-08 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62140

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #7 from Marek Polacek mpolacek at gcc dot gnu.org ---
Fixed then.


[Bug bootstrap/63204] gtype-desc.c:887:40: error: 'struct loop' has no member named 'former_header' breaks bootstrap

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63204

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Mon Sep  8 12:01:50 2014
New Revision: 215012

URL: https://gcc.gnu.org/viewcvs?rev=215012root=gccview=rev
Log:
2014-09-08  Richard Biener  rguent...@suse.de

PR bootstrap/63204
* cfgloop.c (mark_loop_for_removal): Track former header
unconditionally.
* cfgloop.h (struct loop): Add former_header member unconditionally.
* loop-init.c (fix_loop_structure): Enable bogus loop removal
diagnostic unconditionally.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/cfgloop.c
trunk/gcc/cfgloop.h
trunk/gcc/loop-init.c


[Bug bootstrap/63204] gtype-desc.c:887:40: error: 'struct loop' has no member named 'former_header' breaks bootstrap

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63204

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
Fixed.


[Bug fortran/47486] gfortran -M exits with fatal error when -o option is used

2014-09-08 Thread jtravs at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47486

John Travers jtravs at gmail dot com changed:

   What|Removed |Added

 CC||jtravs at gmail dot com

--- Comment #8 from John Travers jtravs at gmail dot com ---
I also can confirm this bug on 4.9.1, any progress?


[Bug middle-end/40135] using alias-set zero for union accesses necessary because of RTL alias oracle

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40135

--- Comment #3 from Richard Biener rguenth at gcc dot gnu.org ---
At least improved (but maybe not fixed) by

2010-02-16  Richard Guenther  rguent...@suse.de

* alias.c (memrefs_conflict_p): Distinguish must-alias from don't know.
(true_dependence): If memrefs_conflict_p computes must-alias
trust it.  Move TBAA check after offset-based disambiguation.
(canon_true_dependence): Likewise.


[Bug middle-end/40135] using alias-set zero for union accesses necessary because of RTL alias oracle

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40135

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
Ok it still has in the function comment

   ???  Contrary to the tree alias oracle this does not return
   one for X + non-constant and Y + non-constant when X and Y are equal.
   If that is fixed the TBAA hack for union type-punning can be removed.  */

which explains what is remaining to do.


[Bug middle-end/40135] using alias-set zero for union accesses necessary because of RTL alias oracle

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40135

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
Eventually just removing the call to mems_in_disjoint_alias_sets_p fixes the
rest (rtx_refs_may_alias_p will apply TBAA as well, _after_ positively
bailing out on the union punning).


[Bug target/63206] New: Gcc 4.9.1 Generated code needlessly stacks r3

2014-09-08 Thread alexandre.nunes at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63206

Bug ID: 63206
   Summary: Gcc 4.9.1 Generated code needlessly stacks r3
   Product: gcc
   Version: 4.9.1
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: alexandre.nunes at gmail dot com

Created attachment 33459
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33459action=edit
testcase

when compiling the following testcase code: 
#include stdint.h
#include string.h

static uint16_t lb[32];

void copy(uint16_t buffer[32])
{
  register uint32_t ret asm(r3);
  asm volatile (mrs %0, cpsr\nmsr cpsr_c, #0xDF : =r (ret));
  memcpy(buffer, lb, 32 * sizeof(uint16_t));
  asm volatile (msr cpsr_c, %0 : : r (ret));
}


w/ -mcpu=arm7tdmi -mno-thumb-interwork -O2,  GCC generates code such as:

stmfdsp!, {r3, lr}
mrs r3, cpsr
msr cpsr_c, #0xDF
ldrr1, .L3
movr2, #64
blmemcpy
msr cpsr_c, r3
ldmfdsp!, {r3, pc}

What's suboptimal is the r3 push/pop. There's no need to preserve/restore r3 as
it's a scratch register.

The testcase forces r3 to be used, because I couldn't make a minimal testcase
that would automatically do it, but I observed this in actual code (which is
very close, if not identical, to the testcase).

Without that (register var + asm(r3)), the generated code would pick r4 and
generate code identical to above, which kinds of makes sense: stacking is
required to r4 (while one could arguee why it would pick a caller-preserved reg
anyway, a different bug IMHO).

Gcc was a vanilla 4.9.1 compiled to arm-none-eabi:
arm-none-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/arm-none-eabi/bin/arm-none-eabi-gcc
COLLECT_LTO_WRAPPER=/usr/local/arm-none-eabi-4.9.1/libexec/gcc/arm-none-eabi/4.9.1/lto-wrapper
Target: arm-none-eabi
Configured with: ../gcc-4.9.1/configure --target=arm-none-eabi
--prefix=/usr/local/arm-none-eabi-4.9.1 --enable-interwork
--enable-languages=c,c++ --with-newlib
--with-headers=../newlib-20140525/newlib/libc/include --with-float=soft
--enable-long-long
Thread model: single
gcc version 4.9.1 (GCC)


[Bug ipa/63196] [5.0 regression] FAIL: g++.dg/torture/pr57140.C -O3 -fomit-frame-pointer (internal compiler error)

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63196

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
Fixed.


[Bug ipa/63196] [5.0 regression] FAIL: g++.dg/torture/pr57140.C -O3 -fomit-frame-pointer (internal compiler error)

2014-09-08 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63196

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Mon Sep  8 14:28:51 2014
New Revision: 215016

URL: https://gcc.gnu.org/viewcvs?rev=215016root=gccview=rev
Log:
2014-09-08  Richard Biener  rguent...@suse.de

PR ipa/63196
* tree-inline.c (copy_loops): The source loop header should
always be non-NULL.
(tree_function_versioning): If loops need fixup after removing
unreachable blocks fix them.
* omp-low.c (simd_clone_adjust): Do not add incr block to
loop under construction.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/omp-low.c
trunk/gcc/tree-inline.c


[Bug c++/63207] New: ICE in expand_expr_real_l when instantiating a template with a lambda that captures a const variable with a dependent initializer

2014-09-08 Thread st at quanttec dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63207

Bug ID: 63207
   Summary: ICE in expand_expr_real_l when instantiating a
template with a lambda that captures a const variable
with a dependent initializer
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: st at quanttec dot com

Compiling the following following code with the current trunk GCC results in an
ICE.

template typename T
struct Base {
  T value;
};

template typename T
struct Test : BaseT {
  T test() {
const int x = this-value;
return ([]{ return x; })();
  }
};

int main()  {
  Testint t;
  t.value = 0;
  return t.test();
}

g++ test.cpp --std=c++11 -Wall
test.cpp: In lambda function:
test.cpp:10:28: warning: ‘x’ is used uninitialized in this function
[-Wuninitialized]
 return ([]{ return x; })();
^
test.cpp:9:15: note: ‘x’ was declared here
 const int x = this-value;
   ^
test.cpp:10:28: internal compiler error: in expand_expr_real_1, at expr.c:9517
 return ([]{ return x; })();
^
0x8c96ba expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
../../gcc/gcc/expr.c:9517
0x8d0dea store_expr(tree_node*, rtx_def*, int, bool)
../../gcc/gcc/expr.c:5338
0x8d8e4b expand_assignment(tree_node*, tree_node*, bool)
../../gcc/gcc/expr.c:5124
0x7e3b33 expand_gimple_stmt_1
../../gcc/gcc/cfgexpand.c:3274
0x7e3b33 expand_gimple_stmt
../../gcc/gcc/cfgexpand.c:3376
0x7e99d3 expand_gimple_basic_block
../../gcc/gcc/cfgexpand.c:5215
0x7eb86f execute
../../gcc/gcc/cfgexpand.c:5821

[Bug c++/61825] [5 regression] g++.dg/cpp0x/static_assert9.C FAILs

2014-09-08 Thread ro at CeBiTec dot Uni-Bielefeld.DE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61825

--- Comment #5 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE ---
Honza,

you meant to prepare a patch in July already

https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00985.html

but nothing has happened since.  Could you please get to this soon?
This regression is causing testsuite noise for two months now.

Thanks.
Rainer


[Bug tree-optimization/63202] tree vectorizer does not make use of alignment information from VRP/CCP

2014-09-08 Thread andi-gcc at firstfloor dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63202

--- Comment #3 from Andi Kleen andi-gcc at firstfloor dot org ---
I'm not sure rewriting the pattern to assume_aligned would be useful. After all
the user could already use assume_aligned directly.

I was more thinking of cases when VRP/CCP can prove alignment in other ways
from the code, and the vectorizer should use that.

Good point that the fallback is not for unalignment. Should probably use a more
fancy test case where unalignment matters for the cost model.

One interesting case is avoiding the need for tail code when the iteration is
not a multiple of the vector length.


[Bug target/63208] New: [SH] Add attribute naked

2014-09-08 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63208

Bug ID: 63208
   Summary: [SH] Add attribute naked
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: olegendo at gcc dot gnu.org
Target: sh*-*-*

Several targets support the 'naked' function attribute.  It'd be nice to have
support for that on SH, too.


[Bug rtl-optimization/63209] New: [ARM] Wrong conditional move generated

2014-09-08 Thread xinliangli at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63209

Bug ID: 63209
   Summary: [ARM] Wrong conditional move generated
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: xinliangli at gmail dot com

Created attachment 33460
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33460action=edit
patch file

GCC (arm-unknown-linux-gnueabi) generates wrong code (O2) for the following
program. The problem is that it uses a source register in the condition move
that has already been overwritten in the previous move.

The program produces output:


top[-1]: ff7a7a7a top[0]: ff7a7a7a left: ff7b7b7b pred: ff7a7a7a
pred != left


The bad assembly code is:

 cmn r1, r2
 mov r0, r3
 movgt   r0, r3



The expected output is:


top[-1]: ff7a7a7a top[0]: ff7a7a7a left: ff7b7b7b pred: ff7b7b7b

The expected assembly:

 cmn r1, r2
 movle   r0, r3


The attached patch fixed the problem. The patch passes regression test.

// tests.c

#include stdio.h

static int Sub(int a, int b) {
  return  b -a;
}

static unsigned Select(unsigned a, unsigned b, unsigned c) {
  const int pa_minus_pb =
  Sub((a   8)  0xff, (b   8)  0xff) +
  Sub((a   0)  0xff, (b   0)  0xff);
  return (pa_minus_pb = 0) ? a : b;
}

__attribute__((noinline)) unsigned Predictor(unsigned left, const unsigned*
const top) {
  const unsigned pred = Select(top[1], left, top[0]);
  return pred;
}

int main(void) {
  const unsigned top[2] = {0xff7a7a7a, 0xff7a7a7a};
  const unsigned left = 0xff7b7b7b;
  const unsigned pred = Predictor(left, top /*+ 1*/);
  fprintf(stderr, top[-1]: %8x top[0]: %8x left: %8x pred: %8x\n,
  top[0], top[1], left, pred);
  if (pred == left)
return 0;
  fprintf(stderr, pred != left\n);
  return 1;
}


[Bug debug/61923] [4.8 Regression] -fcompare-debug errors while building Linux kernel.

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61923

--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Mon Sep  8 19:07:00 2014
New Revision: 215020

URL: https://gcc.gnu.org/viewcvs?rev=215020root=gccview=rev
Log:
Backported from mainline
2014-08-06  Vladimir Makarov  vmaka...@redhat.com

PR debug/61923
* haifa-sched.c (advance_one_cycle): Fix dump.
(schedule_block): Don't advance cycle if we are already at the
beginning of the cycle.

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

Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.target/i386/pr61923.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/haifa-sched.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog


[Bug debug/61923] [4.8 Regression] -fcompare-debug errors while building Linux kernel.

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61923

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org ---
Fixed, thanks.


[Bug c++/61838] ICE on Windows with ctors defined outside class definitions

2014-09-08 Thread st at quanttec dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61838

Stephan Tolksdorf st at quanttec dot com changed:

   What|Removed |Added

 CC||st at quanttec dot com

--- Comment #2 from Stephan Tolksdorf st at quanttec dot com ---
This regression from 4.8 seems to have been fixed on trunk but is still present
on the 4.9 branch. Could the fix be packported to 4.9?

Compiling the following simple snippet with -std=c++11 produces a segfault
with 4.9: 

template typename... Ts struct A {};
struct B { B(Aint); };
B::B(Aint) {}

cc1plus: internal compiler error: Segmentation fault
0x919b1f crash_signal
../../gcc/gcc/toplev.c:337
0x6a5ea2 analyze_functions
../../gcc/gcc/cgraphunit.c:1043
0x6a6f4f finalize_compilation_unit()
../../gcc/gcc/cgraphunit.c:2327
0x559ebb cp_write_global_declarations()
../../gcc/gcc/cp/decl2.c:4616


[Bug tree-optimization/60196] [4.8 Regression] Incorrect compilation with -fwrapv and -ftree-vectorize

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60196

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Mon Sep  8 20:07:29 2014
New Revision: 215024

URL: https://gcc.gnu.org/viewcvs?rev=215024root=gccview=rev
Log:
PR tree-optimization/60196
PR tree-optimization/63189
Backported from mainline
2013-09-17  Cong Hou  co...@google.com

* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Fix a bug
when checking the dot production pattern. The type of rhs operand
of multiply is now checked correctly.

* gcc.dg/vect/pr63189.c: New test.
* gcc.dg/vect/pr60196-1.c: New test.
* gcc.dg/vect/pr60196-2.c: New test.

Backported from mainline
2013-09-17  Cong Hou  co...@google.com

* gcc.dg/vect/vect-reduc-dot-s16c.c: Add a test case with dot product 
on two arrays with short and int types. This should not be recognized
as a dot product pattern.

Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/pr60196-1.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/pr60196-2.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/pr63189.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16c.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog
branches/gcc-4_8-branch/gcc/tree-vect-patterns.c


[Bug tree-optimization/63189] [4.8 Regression] Incorrect results from trivial loop when optimized with O3 or O2+tree vectorization

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63189

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Mon Sep  8 20:07:29 2014
New Revision: 215024

URL: https://gcc.gnu.org/viewcvs?rev=215024root=gccview=rev
Log:
PR tree-optimization/60196
PR tree-optimization/63189
Backported from mainline
2013-09-17  Cong Hou  co...@google.com

* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Fix a bug
when checking the dot production pattern. The type of rhs operand
of multiply is now checked correctly.

* gcc.dg/vect/pr63189.c: New test.
* gcc.dg/vect/pr60196-1.c: New test.
* gcc.dg/vect/pr60196-2.c: New test.

Backported from mainline
2013-09-17  Cong Hou  co...@google.com

* gcc.dg/vect/vect-reduc-dot-s16c.c: Add a test case with dot product 
on two arrays with short and int types. This should not be recognized
as a dot product pattern.

Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/pr60196-1.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/pr60196-2.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/pr63189.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16c.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog
branches/gcc-4_8-branch/gcc/tree-vect-patterns.c


[Bug tree-optimization/60196] [4.8 Regression] Incorrect compilation with -fwrapv and -ftree-vectorize

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60196

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Mon Sep  8 20:15:31 2014
New Revision: 215025

URL: https://gcc.gnu.org/viewcvs?rev=215025root=gccview=rev
Log:
PR tree-optimization/60196
PR tree-optimization/63189
* gcc.dg/vect/pr63189.c: New test.
* gcc.dg/vect/pr60196-1.c: New test.
* gcc.dg/vect/pr60196-2.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/vect/pr60196-1.c
trunk/gcc/testsuite/gcc.dg/vect/pr60196-2.c
trunk/gcc/testsuite/gcc.dg/vect/pr63189.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug tree-optimization/63189] [4.8 Regression] Incorrect results from trivial loop when optimized with O3 or O2+tree vectorization

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63189

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Mon Sep  8 20:15:31 2014
New Revision: 215025

URL: https://gcc.gnu.org/viewcvs?rev=215025root=gccview=rev
Log:
PR tree-optimization/60196
PR tree-optimization/63189
* gcc.dg/vect/pr63189.c: New test.
* gcc.dg/vect/pr60196-1.c: New test.
* gcc.dg/vect/pr60196-2.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/vect/pr60196-1.c
trunk/gcc/testsuite/gcc.dg/vect/pr60196-2.c
trunk/gcc/testsuite/gcc.dg/vect/pr63189.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug tree-optimization/63189] [4.8 Regression] Incorrect results from trivial loop when optimized with O3 or O2+tree vectorization

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63189

--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Mon Sep  8 20:18:02 2014
New Revision: 215026

URL: https://gcc.gnu.org/viewcvs?rev=215026root=gccview=rev
Log:
PR tree-optimization/60196
PR tree-optimization/63189
* gcc.dg/vect/pr63189.c: New test.
* gcc.dg/vect/pr60196-1.c: New test.
* gcc.dg/vect/pr60196-2.c: New test.

Added:
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr60196-1.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr60196-2.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr63189.c
Modified:
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


[Bug tree-optimization/60196] [4.8 Regression] Incorrect compilation with -fwrapv and -ftree-vectorize

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60196

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

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


[Bug tree-optimization/60196] [4.8 Regression] Incorrect compilation with -fwrapv and -ftree-vectorize

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60196

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Mon Sep  8 20:18:02 2014
New Revision: 215026

URL: https://gcc.gnu.org/viewcvs?rev=215026root=gccview=rev
Log:
PR tree-optimization/60196
PR tree-optimization/63189
* gcc.dg/vect/pr63189.c: New test.
* gcc.dg/vect/pr60196-1.c: New test.
* gcc.dg/vect/pr60196-2.c: New test.

Added:
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr60196-1.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr60196-2.c
branches/gcc-4_9-branch/gcc/testsuite/gcc.dg/vect/pr63189.c
Modified:
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog


[Bug tree-optimization/63189] [4.8 Regression] Incorrect results from trivial loop when optimized with O3 or O2+tree vectorization

2014-09-08 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63189

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 #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
Fixed.


[Bug c/63178] Missed incorrect-type-passed-to-function warning

2014-09-08 Thread gccbugs at dima dot secretsauce.net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63178

--- Comment #5 from Dima Kogan gccbugs at dima dot secretsauce.net ---
Hi.

I cherry-picked the commit you mentioned, rebuilt gcc, and the bug was not
resolved. Just in case I did something wrong in that process, I waited for
Debian to update their package. This just happened, and I updated. I'm now
using gcc4.9 version 4.9.1-13 from Debian/unstable. The Debian changelog says
this is using r215008:
http://metadata.ftp-master.debian.org/changelogs//main/g/gcc-4.9/gcc-4.9_4.9.1-13_changelog

As before, the bug is unresolved.

Thanks.


[Bug rtl-optimization/62146] CSE replaces constant with an expression incorrectly

2014-09-08 Thread eraman at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62146

Easwaran Raman eraman at google dot com changed:

   What|Removed |Added

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

--- Comment #4 from Easwaran Raman eraman at google dot com ---
Google ref: b/16870586


[Bug target/61407] Build errors on latest OS X 10.10 Yosemite with Xcode 6 on GCC 4.8.3

2014-09-08 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407

Lawrence Velázquez larryv at macports dot org changed:

   What|Removed |Added

 CC||larryv at macports dot org

--- Comment #34 from Lawrence Velázquez larryv at macports dot org ---
(In reply to James Clarke from comment #33)
 I was able to perform a complete clean bootstrap on my system, so I'm
 curious as to what error(s) you got?

I’m also seeing a build failure on 10.9.4 13E28 with Xcode 5.1.1 5B1008, with
your mailing list patches applied. I'll attach the log in a moment; it was
generated by MacPorts during a 64-bit build of our libgcc port.

 I agree, the two are not equivalent, but the first one (!defined(X) || X) is
 wrong in my opinion, as if the macro is not defined, the documentation for
 dir(5) states that the 32-bit versions are used.

I got the build to succeed by changing

# if defined(_DARWIN_FEATURE_64_BIT_INODE)

to

# if ! defined(__DARWIN_64_BIT_INO_T) || __DARWIN_64_BIT_INO_T

in your second patch.

[Bug target/61407] Build errors on latest OS X 10.10 Yosemite with Xcode 6 on GCC 4.8.3

2014-09-08 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407

--- Comment #35 from Lawrence Velázquez larryv at macports dot org ---
Created attachment 33461
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=33461action=edit
MacPorts log from a failed attempt to build libgcc @4.9.1_0 (x86_64)

There’s a lot of text, I know. To see the environment and commands executed,
search for configure phase started and build phase started. As you might
expect, the failure is near the end.

[Bug target/61407] Build errors on latest OS X 10.10 Yosemite with Xcode 6 on GCC 4.8.3

2014-09-08 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407

--- Comment #36 from Lawrence Velázquez larryv at macports dot org ---
(In reply to Lawrence Velázquez from comment #34)
 I got the build to succeed by changing
 
 # if defined(_DARWIN_FEATURE_64_BIT_INODE)
 
 to
 
 # if ! defined(__DARWIN_64_BIT_INO_T) || __DARWIN_64_BIT_INO_T
 
 in your second patch.

Sorry, I might have gotten mixed up about precisely how I altered your patch.
I'll do a couple of test builds and report back.

[Bug c/38354] Spurious error: initializer element is not computable at load time

2014-09-08 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38354

--- Comment #7 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Mon, 8 Sep 2014, adam at consulting dot net.nz wrote:

 3. To demonstrate this, a GNU extension to C++ has no problem computing the
 address of the function pointer at load time and storing it in a 32-bit 
 integer
 array.

Standard C++ allows static initializers that can only be computed at 
runtime; there's no such thing as an initializer being invalid for C++ 
because it's non-constant.  Thus, it's not significant that this code is 
accepted for C++; quite likely the initializers get computed at runtime in 
the C++ case.


[Bug lto/63166] [5 Regression] ICE (LTO): ipa_intraprocedural_devirtualization, at ipa-prop.c:2611

2014-09-08 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63166

--- Comment #3 from Jan Hubicka hubicka at gcc dot gnu.org ---
Here I get:
Determining dynamic type for call: OBJ_TYPE_REF(_76;(struct
Foobar_Out)Foobar_LOG.D.2901-0) (Foobar_LOG.D.2901,  , 1);
  Starting walk at: _69 = MEM[(struct Foobar_Out
*)Foobar_LOG]._vptr.Foobar_Out;
  instance pointer: Foobar_LOG.D.2901  Outer instance pointer: Foobar_LOG
offset: 0 (bits) vtbl reference: MEM[(struct Foobar_Out
*)Foobar_LOG]._vptr.Foobar_Out
  Function call may change dynamic type:_35 = getName (_50(D), _33);
  Function call may change dynamic type:_33 = operator* (caller_it);
  Function call may change dynamic type:_31 = atEnd (caller_it);
  Function call may change dynamic type:getCallerIterator (_26);
  Function call may change dynamic type:_26 = OBJ_TYPE_REF(_24;(const struct
ECell)_44-0) (_44);
  Function call may change dynamic type:D.2965 = OBJ_TYPE_REF(_21;(struct
ECellList)_19-1) (_19, D.2966);
  Function call may change dynamic type:_19 = getCellList (_49(D));
  Function call may change dynamic type:p_cl_it_14 = OBJ_TYPE_REF(_12;(const
struct ECellList)_9-0) (_9);
  Function call may change dynamic type:_9 = getCellList (_43(D));
  Function call may change dynamic type:operator delete (p_cl_it_14);
  Checking vtbl store: MEM[(struct HashMapIterator
*)p_cl_it_14]._vptr.HashMapIterator = MEM[(void
*)_ZTV15HashMapIteratorI6EIdentP5ECell15DBHashFunctionsE + 16B];
base:MEM[(struct HashMapIterator *)p_cl_it_14] does not match
instance:Foobar_LOG
  Unanalyzed store may change type.
  Function call may change dynamic type:OBJ_TYPE_REF(_16;(struct
CellListIterator)p_cl_it_14-1) (p_cl_it_14);
  Function call may change dynamic type:_31 = atEnd (caller_it);
  Function call may change dynamic type:OBJ_TYPE_REF(_76;(struct
Foobar_Out)Foobar_LOG.D.2901-0) (Foobar_LOG.D.2901,  , 1);
  Function call may change dynamic type:_35 = getName (_50(D), _33);
  Function call may change dynamic type:_33 = operator* (caller_it);
  Targets of polymorphic call of type 0:struct Foobar_Out token 0
Contained in type:struct Foobar_Log at offset 0
This is a complete list. (base types included)
   Foobar_Log::put_to_buf/109 (no definition)
 Targets that are not likely:
   Foobar_Out::put_to_buf/108 (no definition)

I seem to agree that the memory store may potentially be vtable store for the
object in question.  I need to check how the old code gets around it...


[Bug lto/63166] [5 Regression] ICE (LTO): ipa_intraprocedural_devirtualization, at ipa-prop.c:2611

2014-09-08 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63166

--- Comment #4 from Jan Hubicka hubicka at gcc dot gnu.org ---
Aha, is_global_var test going wrong way. I am testing:
Index: ipa-prop.c
===
--- ipa-prop.c  (revision 215023)
+++ ipa-prop.c  (working copy)
@@ -1537,8 +1537,8 @@ compute_known_type_jump_func (tree op, s
call, current_function_decl)
   /* Even if the var seems to be in construction by inline call stack,
 we may work out the actual type by walking memory writes.  */
-   (!is_global_var (base)
-  detect_type_change (op, base, expected_type, call, jfunc,
offset)))
+   (is_global_var (base)
+ || detect_type_change (op, base, expected_type, call, jfunc,
offset)))
 return;

   ipa_set_jf_known_type (jfunc, offset, TREE_TYPE (base),


[Bug c++/61825] [5 regression] g++.dg/cpp0x/static_assert9.C FAILs

2014-09-08 Thread hubicka at ucw dot cz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61825

--- Comment #6 from Jan Hubicka hubicka at ucw dot cz ---
Hi,
sorry for the delay, the problem is that I do not feel good about putting back
the old code from fold-const, since it simply does not make sense.  I need to
dive into the C++ standard what it says about this particular case and how that
corelate with our weak and visibility attributes.  I will try to find time for
that this week.

Honza


[Bug c/38354] Spurious error: initializer element is not computable at load time

2014-09-08 Thread adam at consulting dot net.nz
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38354

--- Comment #8 from Adam Warner adam at consulting dot net.nz ---
Joseph, you're correct:

  4005fa:   b8 c6 05 40 00  moveax,0x4005c6
  4005ff:   89 05 cf 04 20 00   movDWORD PTR [rip+0x2004cf],eax
   # 600ad4 computable_at_load_time_a
  400605:   b8 c6 05 40 00  moveax,0x4005c6
  40060a:   89 05 c8 04 20 00   movDWORD PTR [rip+0x2004c8],eax
   # 600ad8 computable_at_load_time_b

0x4005c6 is the address of the function which is loaded into the lookup table
by a static initializer function at run time.

This is identical to the workaround in C where a lookup table of 32-bit
pointers has to be populated at run time. I agree it is not significant that
the code is accepted for C++. I'm sorry about that.

What I've done in the past is use Perl to generate printf statements to output
the 32-bit addresses as an integer array. The generated array is then compiled
into the binary. A command-line option performs a check that the integer
addresses match the newly compiled function addresses. It usually takes one
additional generation/compilation before they all match up.

It is ridiculous this x86_64 workaround is required to map constants into
memory at load time when the functions occupy (under the default code model)
the same lower 31-bit address space as i386.

The original issue from six years ago is that compilation fails with the error
initializer element is not computable at load time. These calculations are
computable at load time so the error message is spurious. But from a C language
perspective they might not be computable at load time. Thus I believe a
compiler warning is more appropriate than an error. That's the path to
finalising this bug report:

1. Can you confirm from a technical perspective that the error is spurious? If
so the bug report is CONFIRMED. If there are in fact good technical reasons why
the error is valid then please close the bug report as INVALID.

2. If the bug report is confirmed then please decide whether the project will
turn the error message into a warning. If the project will not do this then
please close the bug report as WONTFIX. This part is ultimately a political
decision. Either way it would be nice to have a resolution.


[Bug target/61407] Build errors on latest OS X 10.10 Yosemite with Xcode 6 on GCC 4.8.3

2014-09-08 Thread larryv at macports dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407

--- Comment #37 from Lawrence Velázquez larryv at macports dot org ---
Okay, what I said initially was correct. This was the specific change I made.

https://gist.github.com/larryv/9b1cd34a34733c10f734

[Bug rtl-optimization/63210] New: ira does not select the best register compared with gcc 4.8 for ARM THUMB1

2014-09-08 Thread zhenqiang.chen at arm dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63210

Bug ID: 63210
   Summary: ira does not select the best register compared with
gcc 4.8 for ARM THUMB1
   Product: gcc
   Version: 5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zhenqiang.chen at arm dot com

Here is a case shown ira does not select the best register compared with gcc
4.8 for ARM Cortex-M0 with options:

-Os -mthumb -mcpu=cortex-m0

int foo1 (int c);
int foo2 (int c);

int test (int c)
{
  return (foo1 (c) || foo2 (c));
}

Its rtl is like:

2: r115:SI=r0:SI
7: r0:SI=r115:SI
8: r0:SI=call [`foo1'] argc:0
9: r111:SI=r0:SI
4: r110:SI=0x1
   10: pc={(r111:SI!=0)?L17:pc}
   12: r0:SI=r115:SI
   13: r0:SI=call [`foo2'] argc:0
   14: r112:SI=r0:SI
   16: {r110:SI=r112:SI!=0;clobber r118:SI;}
   17: L17:
   23: r0:SI=r110:SI

For gcc 4.8, r115 is assigned first, which gets r4 since

  Allocno a3r115 of GENERAL_REGS(9) has 4 avail. regs  4-7, ...

Then r110 is assigned to r0. r0:SI=r110:SI can be optimized.

But for trunk/4.9, r110 is assigned first. r110 is conflict with r115 and the
confict cost of r0 is high since r0 is not in avail. regs  4-7 for r115.
So r110 is not assigned with r0.