[Bug c++/63201] Full specialization of a member variable template of a class template does not work
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
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
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
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
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
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)
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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)
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
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)
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
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
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
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
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
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
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
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
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
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)
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)
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
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
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
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
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
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.