[Bug tree-optimization/83104] [8 Regression] ICE: Segmentation fault
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83104 --- Comment #2 from Marc Glisse --- two_valued_val_range_p doesn't work on pointers, it uses vrp_val_min on the type of the arguments. Probably: --- vr-values.c (revision 255021) +++ vr-values.c (working copy) @@ -4091,7 +4091,7 @@ vr_values::simplify_stmt_using_ranges (g LHS = VAR == VAL1 ? (VAL1 BINOP CST) : (VAL2 BINOP CST) */ if (TREE_CODE_CLASS (rhs_code) == tcc_binary - && INTEGRAL_TYPE_P (TREE_TYPE (lhs)) + && INTEGRAL_TYPE_P (TREE_TYPE (rhs1)) && ((TREE_CODE (rhs1) == INTEGER_CST && TREE_CODE (rhs2) == SSA_NAME) || (TREE_CODE (rhs2) == INTEGER_CST (or keep both tests)
[Bug bootstrap/83102] [8 Regression] go bootstrap error in ast-dump.cc due to __is_invocable failure
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83102 Jakub Jelinek changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-11-22 CC||ian at gcc dot gnu.org, ||jakub at gcc dot gnu.org Target Milestone|--- |8.0 Summary|go bootstrap error in |[8 Regression] go bootstrap |ast-dump.cc due to |error in ast-dump.cc due to |__is_invocable failure |__is_invocable failure Ever confirmed|0 |1
[Bug tree-optimization/83072] Late VRP optimization
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83072 --- Comment #4 from rguenther at suse dot de --- On Tue, 21 Nov 2017, glisse at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83072 > > --- Comment #3 from Marc Glisse --- > (In reply to Richard Biener from comment #2) > > The issue is that when EVRP records value-ranges that only hold temporarily > > it doesn't update SSA_NAME_RANGE_INFO but only the internal lattice while > > if the range is determined at the SSA definition point it also updates > > SSA_NAME_RANGE_INFO. > > Seems obvious now you've said it... And VRP1, which would have a separate > SSA_NAME, does not generally call into match-simplify yet. > > I wonder if we'll take the ugly route of making the EVRP lattice global, and > having get_range_info use it if it isn't empty (or checking some flag) and > fall > back to the current behavior otherwise. Seems simpler and cheaper than the > alternatives I am trying to think about. Once Jeff is settlet with his re-orgs I'm going to simply temporarily adjust SSA_NAME_RANGE_INFO. Should be a very simple thing do to.
[Bug bootstrap/83096] Bootstrap on darwin x86_64-apple-darwin15.6.0 (revision 254990) fails
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83096 Richard Biener changed: What|Removed |Added CC||aldyh at gcc dot gnu.org --- Comment #1 from Richard Biener --- Aldy, this is yours.
[Bug rtl-optimization/83095] [8 regression] many tests fail starting with r255001
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83095 Richard Biener changed: What|Removed |Added Target Milestone|--- |8.0
[Bug libfortran/83097] Use __BYTE_ORDER__ instead of runtime test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83097 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-11-22 Ever confirmed|0 |1 --- Comment #1 from Richard Biener --- Confirmed.
[Bug ipa/83094] ICE in ipa_modify_formal_parameters, at ipa-param-manipulation.c:105
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83094 Richard Biener changed: What|Removed |Added Keywords||ice-on-valid-code, openmp CC||marxin at gcc dot gnu.org Component|fortran |ipa --- Comment #2 from Richard Biener --- Not a regression since omp simd is new in GCC 7.2.
[Bug target/83100] [8 Regression] powerpc: internal compiler error: in get_variable_section, at varasm.c:1150 with -fdata-sections
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83100 Richard Biener changed: What|Removed |Added Target||powerpc Component|c |target Target Milestone|--- |8.0
[Bug libgcc/83103] Improve __mulkc3 and __divkc3 on Power9
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83103 Richard Biener changed: What|Removed |Added Keywords||missed-optimization Target||powerpc64le-*-* Status|UNCONFIRMED |NEW Last reconfirmed||2017-11-22 Ever confirmed|0 |1 --- Comment #1 from Richard Biener --- Confirmed.
[Bug tree-optimization/83104] [8 Regression] ICE: Segmentation fault
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83104 Richard Biener changed: What|Removed |Added Target Milestone|--- |8.0 --- Comment #3 from Richard Biener --- (In reply to Marc Glisse from comment #2) > two_valued_val_range_p doesn't work on pointers, it uses vrp_val_min on the > type of the arguments. Probably: > > --- vr-values.c (revision 255021) > +++ vr-values.c (working copy) > @@ -4091,7 +4091,7 @@ vr_values::simplify_stmt_using_ranges (g >LHS = VAR == VAL1 ? (VAL1 BINOP CST) : (VAL2 BINOP CST) */ > >if (TREE_CODE_CLASS (rhs_code) == tcc_binary > - && INTEGRAL_TYPE_P (TREE_TYPE (lhs)) > + && INTEGRAL_TYPE_P (TREE_TYPE (rhs1)) > && ((TREE_CODE (rhs1) == INTEGER_CST > && TREE_CODE (rhs2) == SSA_NAME) > || (TREE_CODE (rhs2) == INTEGER_CST > > (or keep both tests) and/or make two_valued_val_range_p return false for !INTEGRAL_TYPE_P the above and/or this is pre-approved.
[Bug rtl-optimization/83095] [8 regression] many tests fail starting with r255001
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83095 Richard Biener changed: What|Removed |Added Target|powerpc64-unknown-linux-gnu |powerpc64-unknown-linux-gnu ||, x86_64-*-*, i?86-*-* --- Comment #1 from Richard Biener --- I'm seeing the same on x86_64 {,-m32}
[Bug tree-optimization/83089] [8 Regression] ICE: Segmentation fault (in instantiate_scev_name)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83089 --- Comment #3 from Richard Biener --- Author: rguenth Date: Wed Nov 22 08:47:47 2017 New Revision: 255044 URL: https://gcc.gnu.org/viewcvs?rev=255044&root=gcc&view=rev Log: 2017-11-22 Richard Biener PR tree-optimization/83089 * tree-if-conv.c (pass_if_conversion::execute): If anything changed reset SCEV and free the number of iteration estimates. * gcc.dg/pr83089.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/pr83089.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-if-conv.c
[Bug tree-optimization/83089] [8 Regression] ICE: Segmentation fault (in instantiate_scev_name)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83089 Richard Biener changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #4 from Richard Biener --- Fixed.
[Bug libfortran/83070] -Wsign-compare warning in eoshift0
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83070 --- Comment #3 from Janne Blomqvist --- Author: jb Date: Wed Nov 22 08:51:21 2017 New Revision: 255045 URL: https://gcc.gnu.org/viewcvs?rev=255045&root=gcc&view=rev Log: PR 83070 Fix -Wsign-compare warning 2017-11-22 Janne Blomqvist PR libfortran/83070 * intrinsics/eoshift0.c (eoshift0): Fix -Wsign-compare warning by making a_ex and r_ex index_type instead of size_t. Modified: trunk/libgfortran/ChangeLog trunk/libgfortran/intrinsics/eoshift0.c
[Bug tree-optimization/82847] [8 regression] gcc.dg/vect/slp-perm-9.c fail
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82847 --- Comment #4 from rguenther at suse dot de --- On Tue, 21 Nov 2017, rsandifo at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82847 > > rsandifo at gcc dot gnu.org changed: > >What|Removed |Added > > CC||rsandifo at gcc dot gnu.org > > --- Comment #3 from rsandifo at gcc dot gnu.org > --- > Isn't the problem here that vect_perm_byte and vect_perm_short don't return > true for x86_64, even though the patterns seem to be there in sse.md? vect_perm_byte is only available with SSEn+ The test only uses vect_perm_short though.
[Bug libfortran/83070] -Wsign-compare warning in eoshift0
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83070 Janne Blomqvist changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #4 from Janne Blomqvist --- Fixed on trunk, closing.
[Bug rtl-optimization/83098] [8 regression] ICE in assert_rtx_eq_at, at selftest-rtl.c:57
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83098 --- Comment #1 from rsandifo at gcc dot gnu.org --- This sounds like it might be an instance of what Jakub reported here: https://gcc.gnu.org/ml/gcc-patches/2017-11/msg01957.html (Note: I've not committed anything during this period!)
[Bug rtl-optimization/82044] runtime signed integer overflow in check_mem_read_rtx() and all_positions_needed_p() in dse.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82044 --- Comment #6 from Richard Biener --- Author: rguenth Date: Wed Nov 22 09:04:47 2017 New Revision: 255046 URL: https://gcc.gnu.org/viewcvs?rev=255046&root=gcc&view=rev Log: 2017-11-22 Richard Biener Revert 2017-11-21 Martin Liska Backport from mainline 2017-11-21 Martin Liska PR rtl-optimization/82044 PR tree-optimization/82042 * dse.c (check_mem_read_rtx): Check for overflow. Modified: branches/gcc-7-branch/gcc/ChangeLog branches/gcc-7-branch/gcc/dse.c
[Bug tree-optimization/82042] signed integer overflow in ao_ref_init_from_ptr_and_size
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82042 --- Comment #7 from Richard Biener --- Author: rguenth Date: Wed Nov 22 09:04:47 2017 New Revision: 255046 URL: https://gcc.gnu.org/viewcvs?rev=255046&root=gcc&view=rev Log: 2017-11-22 Richard Biener Revert 2017-11-21 Martin Liska Backport from mainline 2017-11-21 Martin Liska PR rtl-optimization/82044 PR tree-optimization/82042 * dse.c (check_mem_read_rtx): Check for overflow. Modified: branches/gcc-7-branch/gcc/ChangeLog branches/gcc-7-branch/gcc/dse.c
[Bug tree-optimization/82042] signed integer overflow in ao_ref_init_from_ptr_and_size
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82042 --- Comment #8 from Jakub Jelinek --- Author: jakub Date: Wed Nov 22 09:08:23 2017 New Revision: 255048 URL: https://gcc.gnu.org/viewcvs?rev=255048&root=gcc&view=rev Log: PR rtl-optimization/82044 PR tree-optimization/82042 * dse.c (record_store): Check for overflow. (check_mem_read_rtx): Properly check for overflow if width == -1, call add_wild_read instead of clear_rhs_from_active_local_stores on overflow and log it into dump_file. Modified: trunk/gcc/ChangeLog trunk/gcc/dse.c
[Bug rtl-optimization/82044] runtime signed integer overflow in check_mem_read_rtx() and all_positions_needed_p() in dse.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82044 --- Comment #7 from Jakub Jelinek --- Author: jakub Date: Wed Nov 22 09:08:23 2017 New Revision: 255048 URL: https://gcc.gnu.org/viewcvs?rev=255048&root=gcc&view=rev Log: PR rtl-optimization/82044 PR tree-optimization/82042 * dse.c (record_store): Check for overflow. (check_mem_read_rtx): Properly check for overflow if width == -1, call add_wild_read instead of clear_rhs_from_active_local_stores on overflow and log it into dump_file. Modified: trunk/gcc/ChangeLog trunk/gcc/dse.c
[Bug rtl-optimization/81308] [8 regression] ICE in calc_dfs_tree, at dominance.c:458
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81308 Markus Trippelsdorf changed: What|Removed |Added CC||trippels at gcc dot gnu.org --- Comment #5 from Markus Trippelsdorf --- Same ICE, different pattern on X86_64: trippels@gcc67 ~ % cat PPCAsmParser.ii struct A { int operator[](int) const {} }; struct B { void m_fn1(); }; struct C { virtual bool m_fn2(int, unsigned &, A &, int &, unsigned long &, bool); }; template struct D { D(int) { MCAsmParserImpl(0, 0, 0, 0); } }; int a; namespace { struct F : C { bool m_fn2(int, unsigned &, A &, int &, unsigned long &, bool); unsigned m_fn3(const A &, B &); F(int, int, int, int) {} }; } bool F::m_fn2(int, unsigned &, A &p3, int &, unsigned long &, bool) { B b; m_fn3(p3, b); } void fn1() { D(0); } unsigned F::m_fn3(const A &p1, B &p2) { for (int *p;; p++) switch (*p) { case 0: p1[a]; case 1: p2.m_fn1(); } } trippels@gcc67 ~ % g++ -w -c -O2 PPCAsmParser.ii during GIMPLE pass: switchconv PPCAsmParser.ii: In function ‘unsigned int {anonymous}::F::m_fn3(const A&, B&)’: PPCAsmParser.ii:34:1: internal compiler error: in calc_dfs_tree, at dominance.c:458 } ^ 0x9cce37 calc_dfs_tree ../../gcc/gcc/dominance.c:458 0x9ce03d calculate_dominance_info(cdi_direction) ../../gcc/gcc/dominance.c:734 0xfdcb93 verify_ssa(bool, bool) ../../gcc/gcc/tree-ssa.c:1082 0xcc80e7 execute_function_todo ../../gcc/gcc/passes.c:2001 0xcc9012 execute_todo ../../gcc/gcc/passes.c:2048
[Bug debug/83034] [8 Regression] ice in mem_loc_descriptor, at dwarf2out.c :15669
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83034 --- Comment #2 from Jakub Jelinek --- Author: jakub Date: Wed Nov 22 09:43:28 2017 New Revision: 255049 URL: https://gcc.gnu.org/viewcvs?rev=255049&root=gcc&view=rev Log: PR debug/83034 * dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES. * gcc.dg/pr83034.c: New test. Added: trunk/gcc/testsuite/gcc.dg/pr83034.c Modified: trunk/gcc/ChangeLog trunk/gcc/dwarf2out.c trunk/gcc/testsuite/ChangeLog
[Bug middle-end/82875] [8 Regression] ICE at -Os on valid code on x86_64-linux-gnu: in find_widening_optab_handler_and_mode, at optabs-query.c:414
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82875 --- Comment #5 from Jakub Jelinek --- Author: jakub Date: Wed Nov 22 09:57:28 2017 New Revision: 255050 URL: https://gcc.gnu.org/viewcvs?rev=255050&root=gcc&view=rev Log: PR middle-end/82875 * optabs.c (expand_doubleword_mult, expand_binop): Before calling expand_binop with *mul_widen_optab, make sure at least one of the operands doesn't have VOIDmode. * gcc.dg/pr82875.c: New test. * gcc.c-torture/compile/pr82875.c: New test. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr82875.c trunk/gcc/testsuite/gcc.dg/pr82875.c Modified: trunk/gcc/ChangeLog trunk/gcc/optabs.c trunk/gcc/testsuite/ChangeLog
[Bug tree-optimization/82847] [8 regression] gcc.dg/vect/slp-perm-9.c fail
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82847 --- Comment #5 from rsandifo at gcc dot gnu.org --- (In reply to rguent...@suse.de from comment #4) > On Tue, 21 Nov 2017, rsandifo at gcc dot gnu.org wrote: > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82847 > > > > rsandifo at gcc dot gnu.org changed: > > > >What|Removed |Added > > > > CC||rsandifo at gcc dot gnu.org > > > > --- Comment #3 from rsandifo at gcc dot gnu.org > gnu.org> --- > > Isn't the problem here that vect_perm_byte and vect_perm_short don't return > > true for x86_64, even though the patterns seem to be there in sse.md? > > vect_perm_byte is only available with SSEn+ > > The test only uses vect_perm_short though. Sure, fixing only vect_perm_short would be enough for this PR. I just meant that the same problem seems to apply to vect_perm_byte too.
[Bug debug/83084] [7/8 Regression] -fcompare-debug failure on ppc64le
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83084 --- Comment #6 from Jakub Jelinek --- Author: jakub Date: Wed Nov 22 10:02:19 2017 New Revision: 255051 URL: https://gcc.gnu.org/viewcvs?rev=255051&root=gcc&view=rev Log: PR debug/83084 * valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset debug insns if they would contain UNSPEC_VOLATILE or volatile asm. (dead_debug_insert_temp): Likewise, but also ignore even non-volatile asm. * g++.dg/opt/pr83084.C: New test. Added: trunk/gcc/testsuite/g++.dg/opt/pr83084.C Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/valtrack.c
[Bug debug/83034] [8 Regression] ice in mem_loc_descriptor, at dwarf2out.c :15669
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83034 Jakub Jelinek changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #3 from Jakub Jelinek --- Fixed.
[Bug middle-end/82875] [8 Regression] ICE at -Os on valid code on x86_64-linux-gnu: in find_widening_optab_handler_and_mode, at optabs-query.c:414
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82875 Jakub Jelinek changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #6 from Jakub Jelinek --- Fixed.
[Bug debug/83084] [7 Regression] -fcompare-debug failure on ppc64le
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83084 Jakub Jelinek changed: What|Removed |Added Summary|[7/8 Regression]|[7 Regression] |-fcompare-debug failure on |-fcompare-debug failure on |ppc64le |ppc64le --- Comment #7 from Jakub Jelinek --- Fixed on the trunk so far.
[Bug tree-optimization/82847] [8 regression] gcc.dg/vect/slp-perm-9.c fail
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82847 --- Comment #6 from rguenther at suse dot de --- On Wed, 22 Nov 2017, rsandifo at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82847 > > --- Comment #5 from rsandifo at gcc dot gnu.org > --- > (In reply to rguent...@suse.de from comment #4) > > On Tue, 21 Nov 2017, rsandifo at gcc dot gnu.org wrote: > > > > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82847 > > > > > > rsandifo at gcc dot gnu.org changed: > > > > > >What|Removed |Added > > > > > > CC||rsandifo at gcc dot > > > gnu.org > > > > > > --- Comment #3 from rsandifo at gcc dot gnu.org > > gnu.org> --- > > > Isn't the problem here that vect_perm_byte and vect_perm_short don't > > > return > > > true for x86_64, even though the patterns seem to be there in sse.md? > > > > vect_perm_byte is only available with SSEn+ > > > > The test only uses vect_perm_short though. > > Sure, fixing only vect_perm_short would be enough for this PR. I just > meant that the same problem seems to apply to vect_perm_byte too. We mostly use the "generic" vect_perm ... or maybe we used to do that.
[Bug go/83102] [8 Regression] go bootstrap error in ast-dump.cc due to __is_invocable failure
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83102 --- Comment #5 from Jonathan Wakely --- This is the fix for the Go frontend (untested, but obviously correct): --- a/gcc/go/gofrontend/gogo.h +++ b/gcc/go/gofrontend/gogo.h @@ -117,7 +117,7 @@ class Import_init // For sorting purposes. struct Import_init_lt { - bool operator()(const Import_init* i1, const Import_init* i2) + bool operator()(const Import_init* i1, const Import_init* i2) const { return i1->init_name() < i2->init_name(); }
[Bug go/83102] [8 Regression] go bootstrap error in ast-dump.cc due to __is_invocable failure
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83102 --- Comment #6 from Jonathan Wakely --- Author: redi Date: Wed Nov 22 11:06:15 2017 New Revision: 255052 URL: https://gcc.gnu.org/viewcvs?rev=255052&root=gcc&view=rev Log: PR go/83102 relax std::set checks for invocable comparison object PR go/83102 * include/bits/stl_tree.h (_Rb_tree): Relax invocable checks for comparison object pre-C++17. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_tree.h
[Bug bootstrap/83015] [8 regression] bootstrap comparison failure on ia64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83015 --- Comment #14 from Andreas Schwab --- (In reply to Jan Hubicka from comment #11) > I was able to bootstrap on ia64 box (terbium) shortly before the unwind > changes went in without the bootstrap miscompare. Your testing was invalidated by the broken inline.
[Bug target/82641] Unable to enable crc32 for a certain function with target attribute on ARM (aarch32)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82641 Richard Earnshaw changed: What|Removed |Added Target Milestone|--- |8.0 Severity|normal |enhancement
[Bug c++/68391] -Wsuggest-override does not work on Item 12 of Effective Modern C++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68391 Eric Gallager changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |INVALID --- Comment #3 from Eric Gallager --- (In reply to Alexander Volkov from comment #1) > -Wsuggest-override should not produce warnings in this case, because none of > members of Derived override virtual functions of Base. > > -Woverloaded-virtual has another meaning: "With this option, the compiler > warns when you define a function with the same name as a virtual function, > but with a type signature that does not match any declarations from the base > class." I guess since the reporter never replied, I'll close this bug based on this reply.
[Bug c++/81930] [meta-bug] Issues with -Weffc++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81930 Bug 81930 depends on bug 68391, which changed state. Bug 68391 Summary: -Wsuggest-override does not work on Item 12 of Effective Modern C++ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68391 What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |INVALID
[Bug c++/77984] Invalid warning on templated operator= with -Weffc++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77984 --- Comment #6 from Eric Gallager --- (In reply to Eric Gallager from comment #5) > (In reply to Jonathan Wakely from comment #4) > > No, but IMHO it should be (unless somebody fixes it, see PR 16166 and PR > > 16168 and PR 55837 and others). > > I'd rather see it fixed; I might give it a try myself once I learn enough > c++ to know what I'm doing. In the meantime I'll make a meta-bug to gather > all the -Weffc++ bugs together. Update: The meta-bug is now bug 81930, for reference.
[Bug rtl-optimization/83095] [8 regression] many tests fail starting with r255001
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83095 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek --- Retry with r255048 ?
[Bug target/83105] New: [8 regression] error: -mfloat-abi=hard: selected processor lacks an FPU
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83105 Bug ID: 83105 Summary: [8 regression] error: -mfloat-abi=hard: selected processor lacks an FPU Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: nsz at gcc dot gnu.org Target Milestone: --- if gcc is configured with --with-float=hard --target=arm-linux-gnueabihf but without --with-fpu or --with-arch setting then the configuration succeeds but the built xgcc fails: $ ./xgcc -B. -xc -
[Bug bootstrap/83106] New: [8 regression] libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83106 Bug ID: 83106 Summary: [8 regression] libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=] Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: bootstrap Assignee: unassigned at gcc dot gnu.org Reporter: dimhen at gmail dot com Target Milestone: --- r254985 PASS r255052 FAIL libtool: compile: /home/dimhen/build/gcc_current/./gcc/xgcc -B/home/dimhen/build/gcc_current/./gcc/ -B/usr/local/gcc_current/x86_64-pc-linux-gnu/bin/ -B/usr/local/gcc_current/x86_64-pc-linux-gnu/lib/ -isystem /usr/local/gcc_current/x86_64-pc-linux-gnu/include -isystem /usr/local/gcc_current/x86_64-pc-linux-gnu/sys-include -DHAVE_CONFIG_H -I. -I/home/dimhen/src/gcc_current/libgomp -I/home/dimhen/src/gcc_current/libgomp/config/linux/x86 -I/home/dimhen/src/gcc_current/libgomp/config/linux -I/home/dimhen/src/gcc_current/libgomp/config/posix -I/home/dimhen/src/gcc_current/libgomp -I/home/dimhen/src/gcc_current/libgomp/../include -Wall -Werror -pthread -ftls-model=initial-exec -fcf-protection -mcet -g -O2 -MT target.lo -MD -MP -MF .deps/target.Tpo -c /home/dimhen/src/gcc_current/libgomp/target.c -fPIC -DPIC -o .libs/target.o /home/dimhen/src/gcc_current/libgomp/target.c: In function ‘gomp_target_init’: /home/dimhen/src/gcc_current/libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=] strncat (plugin_name, cur, next ? next - cur : strlen (cur)); ^~~~ cc1: all warnings being treated as errors make[5]: *** [Makefile:659: target.lo] Error 1 $ ~/src/gcc_current/configure --prefix=/usr/local/gcc_current --enable-checking=yes,df,fold,rtl,extra --enable-languages=c,c++,lto --disable-multilib --enable-shared --enable-threads=posix --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --enable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --with-tune=native $ make
[Bug fortran/79072] ICE with class(*) pointer function result and character value
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79072 --- Comment #18 from Paul Thomas --- Author: pault Date: Wed Nov 22 11:37:16 2017 New Revision: 255053 URL: https://gcc.gnu.org/viewcvs?rev=255053&root=gcc&view=rev Log: 2017-11-22 Paul Thomas PR fortran/79072 * trans-stmt.c (trans_associate_var): Weaken the over strong condition for using the fake result decl. 2017-11-22 Paul Thomas PR fortran/79072 * gfortran.dg/class_result_6.f90: New test for comment 10 of the PR. Added: trunk/gcc/testsuite/gfortran.dg/class_result_6.f90 Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/trans-stmt.c trunk/gcc/testsuite/ChangeLog
[Bug rtl-optimization/83098] [8 regression] ICE in assert_rtx_eq_at, at selftest-rtl.c:57
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83098 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek --- Yes, please retry with r255048 or later.
[Bug rtl-optimization/83098] [8 regression] ICE in assert_rtx_eq_at, at selftest-rtl.c:57
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83098 --- Comment #3 from ro at CeBiTec dot Uni-Bielefeld.DE --- > --- Comment #2 from Jakub Jelinek --- > Yes, please retry with r255048 or later. Currently running: after omitting Go for PR go/83102, I'm into make check now. Thanks. Rainer
[Bug rtl-optimization/82628] [8 Regression] wrong code at -Os on x86_64-linux-gnu in the 32-bit mode
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82628 Jakub Jelinek changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org --- Comment #19 from Jakub Jelinek --- Fixed.
[Bug middle-end/82556] [7/8 Regression] internal compiler error in curr_insn_transform, at lra-constraints.c:4307
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82556 Jakub Jelinek changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #9 from Jakub Jelinek --- Fixed.
[Bug c++/59930] template friend declarations, namespaces, and explicit instantiations don't mix
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59930 Nathan Sidwell changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2017-11-22 Assignee|unassigned at gcc dot gnu.org |nathan at gcc dot gnu.org Ever confirmed|0 |1
[Bug tree-optimization/83044] [8 Regression] ice in contains_struct_check
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83044 --- Comment #5 from Jakub Jelinek --- Author: jakub Date: Wed Nov 22 12:35:26 2017 New Revision: 255054 URL: https://gcc.gnu.org/viewcvs?rev=255054&root=gcc&view=rev Log: PR tree-optimization/83044 * tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests that need the upper bound. Subtract offset from get_addr_base_and_unit_offset only if positive and subtract it before division by eltsize rather than after it. * gcc.dg/pr83044.c: New test. * c-c++-common/Warray-bounds.c (fb): Fix up MAX value. Added: trunk/gcc/testsuite/gcc.dg/pr83044.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/c-c++-common/Warray-bounds.c trunk/gcc/tree-vrp.c
[Bug tree-optimization/83044] [8 Regression] ice in contains_struct_check
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83044 Jakub Jelinek changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #6 from Jakub Jelinek --- Fixed.
[Bug libgomp/83106] [8 regression] libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83106 Richard Biener changed: What|Removed |Added Keywords||build, diagnostic CC||jakub at gcc dot gnu.org, ||msebor at gcc dot gnu.org Component|bootstrap |libgomp Target Milestone|--- |8.0
[Bug target/83105] [8 regression] arm-*-*eabihf: error: -mfloat-abi=hard: selected processor lacks an FPU
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83105 Richard Biener changed: What|Removed |Added Target Milestone|--- |8.0
[Bug tree-optimization/82402] [6/7/8 Regression] error: SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82402 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek --- So shall we ignore it on them in the checking code, or make sure it is never set?
[Bug libgomp/83106] [8 regression] libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83106 Jakub Jelinek changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2017-11-22 Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Jakub Jelinek --- Created attachment 42678 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42678&action=edit gcc8-pr83106.patch I think the warning is just bogus for strncat. Unlike strncpy, which is weird, sometimes doesn't terminate, sometimes unnecessarily fills with zeros and the third argument represents the size of the destination (so indeed specifying the size based on strlen of the source might be a bug), strncat does something different, the third argument is the max number of chars to take from the src string; and strncat always terminates. So, passing strlen (src) as third argument is nothing problematic, it is just another way of specifying strcat, or using something strlen based is sane too (both smaller or larger). That said, the code in target.c is ugly and relies on tree-ssa-strlen.c pass to fix the mess up, so I'll test and commit the attached patch.
[Bug tree-optimization/82402] [6/7/8 Regression] error: SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82402 --- Comment #7 from rguenther at suse dot de --- On Wed, 22 Nov 2017, jakub at gcc dot gnu.org wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82402 > > Jakub Jelinek changed: > >What|Removed |Added > > CC||jakub at gcc dot gnu.org > > --- Comment #5 from Jakub Jelinek --- > So shall we ignore it on them in the checking code, or make sure it is never > set? Neither. We should fix whoever fails to set it. Whether we want to at some point ignore it / remove it is another question. Looks like the culprit is somehow the vectorizer pass which ends up with a spurious MEM_23(ab) for me. I guess it doesn't really expect the loop exit to end in a call with just an abnormal outgoing edge... Let me have a look.
[Bug tree-optimization/82402] [6/7/8 Regression] error: SSA_NAME_OCCURS_IN_ABNORMAL_PHI should be set
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82402 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2017-11-22 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #6 from Richard Biener --- Mine.
[Bug c++/80711] warn on non-const accessor member functions
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80711 Jonathan Wakely changed: What|Removed |Added Last reconfirmed|2017-05-11 00:00:00 |2017-11-22 --- Comment #2 from Jonathan Wakely --- Also useful would be to warn for members that don't access any state at all: struct indirect_cmp { bool operator()(const X* l, const X* r) { return *l < *r; } }; This comparison object should have a const-qualified member function to be usable with associative containers such as std::set (see PR 83102 for example).
[Bug c++/83107] New: -Wshift-count-overflow does not report left shift count >= width in some cases.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83107 Bug ID: 83107 Summary: -Wshift-count-overflow does not report left shift count >= width in some cases. Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: contact+gcc at clementfevrier dot fr Target Milestone: --- -Wshift-count-overflow does not report left shift count >= width in some cases. If the result of a<= width of type [-Wshift-count-overflow] auto val1 = 1<<32; ^~ while I would expect to have in addition: main.cpp:4:17: warning: left shift count >= width of type [-Wshift-count-overflow] auto val2 = (unsigned long int)1<<32; ^~ I tried with both gcc v5 and v8. Their respective "-save-temps" output follows % gcc -v -save-temps -std=gnu++11 main.cpp Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.5' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=gnu++11' '-mtune=generic' '-march=x86-64' /usr/lib/gcc/x86_64-linux-gnu/5/cc1plus -E -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE main.cpp -mtune=generic -march=x86-64 -std=gnu++11 -fpch-preprocess -fstack-protector-strong -Wformat -Wformat-security -o main.ii ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/5" ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/5/../../../../x86_64-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/include/c++/5 /usr/include/x86_64-linux-gnu/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/x86_64-linux-gnu/5/include /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed /usr/include/x86_64-linux-gnu /usr/include End of search list. COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=gnu++11' '-mtune=generic' '-march=x86-64' /usr/lib/gcc/x86_64-linux-gnu/5/cc1plus -fpreprocessed main.ii -quiet -dumpbase main.cpp -mtune=generic -march=x86-64 -auxbase main -std=gnu++11 -version -fstack-protector-strong -Wformat -Wformat-security -o main.s GNU C++11 (Ubuntu 5.4.0-6ubuntu1~16.04.5) version 5.4.0 20160609 (x86_64-linux-gnu) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU C++11 (Ubuntu 5.4.0-6ubuntu1~16.04.5) version 5.4.0 20160609 (x86_64-linux-gnu) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 86227c1230bcf689e6a1b7d559effd6b main.cpp: In function ‘int main()’: main.cpp:3:17: warning: left shift count >= width of type [-Wshift-count-overflow] auto val1 = 1<<32; ^ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=gnu++11' '-mtune=generic' '-march=x86-64' as -v --64 -o main.o main.s GNU assembler version 2.26.1 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.26.1 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gn
[Bug c++/82410] [7/8 Regression] ICE in replace_placeholders_r
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82410 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #5 from Jakub Jelinek --- It is the "nor whether SUB is a CONSTRUCTOR." part of the patch that causes this. The PLACEHOLDER_EXPR's type is S, while the VAR_DECL passed as second argument to replace_placeholders is a temporary with A type. sub is: main()::S::operator main()::A (&TARGET_EXPR )->p}>); Don't know replace_placeholders enough to fix this myself.
[Bug c++/83045] [8 Regression] -Wreturn-type regression in C++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83045 Jakub Jelinek changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org --- Comment #4 from Jakub Jelinek --- Fixed.
[Bug target/82713] [8 Regression] ICE in ix86_builtin_vectorization_cost, at config/i386/i386.c:44475
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82713 Jakub Jelinek changed: What|Removed |Added Status|ASSIGNED|RESOLVED CC||jakub at gcc dot gnu.org Resolution|--- |FIXED --- Comment #8 from Jakub Jelinek --- Fixed.
[Bug middle-end/82547] wide_int is not setting overflow properly for large unsigned add/subtract calculations.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82547 --- Comment #3 from rsandifo at gcc dot gnu.org --- Author: rsandifo Date: Wed Nov 22 13:58:57 2017 New Revision: 255059 URL: https://gcc.gnu.org/viewcvs?rev=255059&root=gcc&view=rev Log: PR82547: Undetected overflow for UNSIGNED wide_ints wi::add_large and wi::sub_large weren't setting the overflow bit correctly for unsigned operations if the result needed fewer HWIs than the precision. 2017-11-22 Richard Sandiford gcc/ PR middle-end/82547 * wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection for unsigned values with fewer HWIs than the precision. (test_overflow): New function. (wide_int_cc_tests): Call it. Modified: trunk/gcc/ChangeLog trunk/gcc/wide-int.cc
[Bug middle-end/83004] [8 regression] gcc.dg/vect/pr81136.c fail
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83004 --- Comment #4 from rsandifo at gcc dot gnu.org --- Author: rsandifo Date: Wed Nov 22 13:58:46 2017 New Revision: 255058 URL: https://gcc.gnu.org/viewcvs?rev=255058&root=gcc&view=rev Log: PR83004: Accidental change to pr81136.c for VECTOR_BITS==128 r254589 was supposed to leave tests unchanged for the default VECTOR_BITS==128, but I must have got my sums wrong on pr81136.c. 2017-11-22 Richard Sandiford gcc/testsuite/ PR testsuite/83004 * gcc.dg/vect/pr81136.c: Restore previous alignment of 32 in the default case. Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/vect/pr81136.c
[Bug middle-end/83004] [8 regression] gcc.dg/vect/pr81136.c fail
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83004 rsandifo at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #5 from rsandifo at gcc dot gnu.org --- Patch applied.
[Bug middle-end/82547] wide_int is not setting overflow properly for large unsigned add/subtract calculations.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82547 --- Comment #4 from rsandifo at gcc dot gnu.org --- Patch applied to trunk. Not sure if we want to backport or not, so leaving open just in case.
[Bug go/83102] [8 Regression] go bootstrap error in ast-dump.cc due to __is_invocable failure
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83102 --- Comment #7 from Jonathan Wakely --- Created attachment 42679 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42679&action=edit Patch to make comparisons work on const objects. Parse::Enclosing_var_comparison::operator() needs a fix too. With this patch I can bootstrap with Go at r255051 (after that it builds without a patch, because I relaxed the static_assert in libstdc++).
[Bug target/83100] [8 Regression] powerpc: internal compiler error: in get_variable_section, at varasm.c:1150 with -fdata-sections
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83100 --- Comment #2 from Helmut Grohne --- affects armel https://jenkins.debian.net/job/rebootstrap_armel_gcc8/2/console
[Bug rtl-optimization/63491] Ice in LRA with simple vector test case on power
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63491 Bill Schmidt changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #17 from Bill Schmidt --- GCC 5 has closed, so this can also.
[Bug target/82862] [8 Regression] SPEC CPU2006 465.tonto performance regression with r253975 (up to 40% drop for particular loop)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82862 --- Comment #2 from Jan Hubicka --- First of all, thanks a lot for reproducer! Here are times with vectorizer enabled, disabled and no costmodel Performance counter stats for './a.out-vect 21 100' (10 runs): 4588.055614 task-clock:u (msec) #1.000 CPUs utilized ( +- 0.49% ) 0 context-switches:u#0.000 K/sec 0 cpu-migrations:u #0.000 K/sec 88 page-faults:u #0.019 K/sec ( +- 0.44% ) 14,911,755,271 cycles:u #3.250 GHz ( +- 0.37% ) 52,564,741,152 instructions:u#3.53 insn per cycle ( +- 0.00% ) 4,073,206,037 branches:u# 887.785 M/sec ( +- 0.00% ) 18,106,857 branch-misses:u #0.44% of all branches ( +- 0.30% ) 4.589172192 seconds time elapsed ( +- 0.50% ) jan@skylake:~/trunk/build/tonto> perf stat --repeat 10 ./a.out-novect 21 100 Performance counter stats for './a.out-novect 21 100' (10 runs): 3549.651576 task-clock:u (msec) #1.000 CPUs utilized ( +- 0.65% ) 0 context-switches:u#0.000 K/sec 0 cpu-migrations:u #0.000 K/sec 88 page-faults:u #0.025 K/sec ( +- 0.42% ) 11,563,811,687 cycles:u #3.258 GHz ( +- 0.61% ) 39,259,740,624 instructions:u#3.40 insn per cycle ( +- 0.00% ) 3,061,205,511 branches:u# 862.396 M/sec ( +- 0.00% ) 11,774,836 branch-misses:u #0.38% of all branches ( +- 0.36% ) 3.550955730 seconds time elapsed ( +- 0.65% ) jan@skylake:~/trunk/build/tonto> perf stat --repeat 10 ./a.out-nocost 21 100 Performance counter stats for './a.out-nocost 21 100' (10 runs): 4621.515923 task-clock:u (msec) #1.000 CPUs utilized ( +- 0.31% ) 0 context-switches:u#0.000 K/sec 0 cpu-migrations:u #0.000 K/sec 87 page-faults:u #0.019 K/sec ( +- 0.35% ) 14,965,340,896 cycles:u #3.238 GHz ( +- 0.30% ) 52,817,740,929 instructions:u#3.53 insn per cycle ( +- 0.00% ) 4,326,205,814 branches:u# 936.101 M/sec ( +- 0.00% ) 16,615,805 branch-misses:u #0.38% of all branches ( +- 0.10% ) 4.622600700 seconds time elapsed ( +- 0.31% ) So vectorization hurts both in time and instruction count. There are two loops to vectorize. _34 = _74 + S.2_106; _35 = _34 * _121; _36 = _35 + _124; _38 = _36 * _37; _39 = (sizetype) _38; _40 = _72 + _39; _41 = MEM[(real(kind=8)[0:] *)A.14_116][S.2_106]; *_40 = _41; S.2_88 = S.2_106 + 1; if (_77 < S.2_88) goto ; [15.00%] else goto loopback; [85.00%] Vector inside of loop cost: 76 Vector prologue cost: 24 Vector epilogue cost: 48 Scalar iteration cost: 24 Scalar outside cost: 24 Vector outside cost: 72 prologue iterations: 0 epilogue iterations: 2 Calculated minimum iters for profitability: 3 tonto.f90:26:0: note: Runtime profitability threshold = 4 tonto.f90:26:0: note: Static estimate profitability threshold = 11 and _18 = S.2_105 + 1; _19 = _18 * _61; _2 = _19 - _61; _21 = _2 * _3; _22 = (sizetype) _21; _23 = _11 + _22; _24 = *_23; _25 = _70 + S.2_105; _26 = _25 * _117; _27 = _26 + _120; _29 = _27 * _28; _30 = (sizetype) _29; _31 = _68 + _30; _32 = *_31; _33 = _24 * _32; MEM[(real(kind=8)[0:] *)A.14_116][S.2_105] = _33; if (_18 > _77) goto ; [15.00%] else loopback; [85.00%] Vector inside of loop cost: 176 Vector prologue cost: 24 Vector epilogue cost: 112 Scalar iteration cost: 48 Scalar outside cost: 24 Vector outside cost: 136 prologue iterations: 0 epilogue iterations: 2 Calculated minimum iters for profitability: 7 Static estimate profitability threshold = 18 Both loops iterate about 9 time so the thresholds are close to being never executed. So the slowdown seems to be just colateral damage of adding vectorized loop for something that is not executed enough. This is how we handle first loop: _34 = _74 + S.2_106; irrelevant _35 = _34 * _121;irrelevant _36 = _35 + _124;
[Bug target/82862] [8 Regression] SPEC CPU2006 465.tonto performance regression with r253975 (up to 40% drop for particular loop)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82862 --- Comment #3 from Jan Hubicka --- Created attachment 42680 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42680&action=edit Assembly produced showing register pressure issues.
[Bug go/83102] [8 Regression] go bootstrap error in ast-dump.cc due to __is_invocable failure
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83102 --- Comment #8 from ian at gcc dot gnu.org --- Author: ian Date: Wed Nov 22 15:18:43 2017 New Revision: 255062 URL: https://gcc.gnu.org/viewcvs?rev=255062&root=gcc&view=rev Log: compiler: make comparison operator() methods const This is required for new versions of libstdc++ in C++17 mode. Fixes GCC PR 83102. Reviewed-on: https://go-review.googlesource.com/79396 Modified: trunk/gcc/go/gofrontend/MERGE trunk/gcc/go/gofrontend/gogo.h trunk/gcc/go/gofrontend/parse.cc trunk/gcc/go/gofrontend/parse.h
[Bug go/83102] [8 Regression] go bootstrap error in ast-dump.cc due to __is_invocable failure
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83102 Ian Lance Taylor changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #9 from Ian Lance Taylor --- Should be fixed.
[Bug c/83108] New: Unaligned 128bit dereference causes segfault with -O2 on x86-64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83108 Bug ID: 83108 Summary: Unaligned 128bit dereference causes segfault with -O2 on x86-64 Product: gcc Version: 7.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: gcc-bugspam at coralbark dot net Target Milestone: --- Created attachment 42681 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42681&action=edit Preprocessed Source file If I have a __uint128_t *unalignedPtr Which points to an 8 byte (but not 16 byte) location then *unalignedPtr = 0; causes a seg fault on my x86-64 machine using: gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2) I'm attaching the example source file and the preprocessed source. I compile with (to see the problem): gcc -O2 128alignchk.c -o 128alignchk I've tried turning on individual optimisation to track down the problem but if I compile with: gcc -O1 -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fdevirtualize-speculatively -fexpensive-optimizations -fgcse -fgcse-lm -fhoist-adjacent-loads -finline-small-functions -findirect-inlining -fipa-cp -fipa-bit-cp -fipa-vrp -fipa-sra -fipa-icf -fisolate-erroneous-paths-dereference -flra-remat -foptimize-sibling-calls -foptimize-strlen -fpartial-inlining -fpeephole2 -freorder-blocks-algorithm=stc -freorder-blocks-and-partition -freorder-functions -frerun-cse-after-loop -fsched-interblock -fsched-spec -fschedule-insns2 -fstore-merging -fstrict-aliasing -ftree-builtin-call-dce -ftree-switch-conversion -ftree-tail-merge -fcode-hoisting -ftree-pre -ftree-vrp -fipa-ra -fstrict-overflow -fvect-cost-model=cheap 128alignchk.c -o 128alignchk The resulting binary works fine (even though the output of -Q --help=optimizers is the same as with -O2).
[Bug c/83108] Unaligned 128bit dereference causes segfault with -O2 on x86-64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83108 --- Comment #1 from Jon Levell --- Created attachment 42682 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42682&action=edit Plain source file
[Bug c/83108] Unaligned 128bit dereference causes segfault with -O2 on x86-64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83108 Markus Trippelsdorf changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||trippels at gcc dot gnu.org Resolution|--- |INVALID --- Comment #2 from Markus Trippelsdorf --- unsigned __int128 always needs 16 byte alignement, otherwise you are invoking undefined behavior.
[Bug c/83108] Unaligned 128bit dereference causes segfault with -O2 on x86-64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83108 --- Comment #3 from Jon Levell --- I'm surprised this was closed invalid. "While the x86 architecture originally did not require aligned memory access, and still works without it, some SSE2 instructions on x86 CPUs do require the data to be 128-bit (16-byte) aligned" I'm not doing anything SSE2 related. I'm surprised this is considered undefined behaviour?
[Bug libgomp/83106] [8 regression] libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83106 Martin Sebor changed: What|Removed |Added CC||mliska at suse dot cz --- Comment #2 from Martin Sebor --- Martin Liska has a patch out for review to fix this warning: https://gcc.gnu.org/ml/gcc-patches/2017-11/msg01763.html
[Bug c/83108] Unaligned 128bit dereference causes segfault with -O2 on x86-64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83108 --- Comment #4 from Markus Trippelsdorf --- (In reply to Jon Levell from comment #3) > I'm surprised this was closed invalid. > > "While the x86 architecture originally did not require aligned memory > access, and still works without it, some SSE2 instructions on x86 CPUs do > require the data to be 128-bit (16-byte) aligned" > > I'm not doing anything SSE2 related. I'm surprised this is considered > undefined behaviour? It has nothing to do with SSE2. GCC simply assumes that __uint128_t is 16byte alignmented and optimizes accordingly (clang does the same).
[Bug target/82862] [8 Regression] SPEC CPU2006 465.tonto performance regression with r253975 (up to 40% drop for particular loop)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82862 --- Comment #4 from Richard Biener --- I don't have any good ideas here. Fortran with allocated arrays tends to use quite some integer registers for all the IV setup and computation. One can experiment with less peeling of vector epilogues (--param max-completely-peel-times=1) as well as maybe adding another code sinking pass. In the end it's intelligent remat of expressions (during RA) that needs to be done as I fully expect not having enough integer registers to compute and keep live everything. There seems to be missed invariant motion on the GIMPLE side and also stack allocation in an inner loop which we might be able to hoist. Maybe that (__builtin_stack_save/restore) confuses RA. Those builtins confuse LIM at least (a present memcpy does as well, and we expand that to a libcall). -fno-tree-loop-distribute-patterns helps for that. But even then we still spill a lot. Thus, try -fno-tree-loop-distribute-patterns plus Index: gcc/tree-ssa-loop-im.c === --- gcc/tree-ssa-loop-im.c (revision 255051) +++ gcc/tree-ssa-loop-im.c (working copy) @@ -1432,7 +1432,10 @@ gather_mem_refs_stmt (struct loop *loop, bool is_stored; unsigned id; - if (!gimple_vuse (stmt)) + if (!gimple_vuse (stmt) + || gimple_call_builtin_p (stmt, BUILT_IN_STACK_SAVE) + || gimple_call_builtin_p (stmt, BUILT_IN_STACK_RESTORE) + || gimple_call_builtin_p (stmt, BUILT_IN_ALLOCA_WITH_ALIGN)) return; mem = simple_mem_ref_in_stmt (stmt, &is_stored);
[Bug tree-optimization/83007] [8 Regression] -Wstringop-overflow false positive
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83007 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #3 from Jakub Jelinek --- (In reply to Martin Sebor from comment #1) > A common mistake with strncat is to specify as the bound the source of the > source string (instead of the remaining space in the destination), as in: That doesn't really make sense to me. If you know the remaining space in the destination, that would mean also you know the length of the string in the destination; then you should just use the known location of the '\0' as the spot to memcpy + termination. target.c uses strncat for a completely different purpose, which better matches what the function does - sometimes it wants to copy the whole src string, but sometimes just a portion of it and that is what is specified by the third strncat argument.
[Bug libgomp/83106] [8 regression] libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83106 --- Comment #3 from Martin Sebor --- The warning for strncat helps find similar bugs as for strncpy: defeating the size constraint by specifying the length of the source rather than the amount of space in the destination: strncat (d, s, strlen (s)); This is, of course, equivalent to strcat (d, s) and so an unnecessary/unintended use of the function. Similar recommendation as for strncpy also applies to strncat: strncat (d, s, sizeof d - strlen (d) - 1); See for example: https://www.us-cert.gov/bsi/articles/knowledge/coding-practices/strncpy-and-strncat The GCC code happens to be safe but there's no good way to distinguish safe but unintended uses from unsafe ones and so the warning errs on the side of caution.
[Bug tree-optimization/83007] [8 Regression] -Wstringop-overflow false positive
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83007 Martin Sebor changed: What|Removed |Added See Also||https://gcc.gnu.org/bugzill ||a/show_bug.cgi?id=83106 --- Comment #4 from Martin Sebor --- The target.c use is safe but indistinguishable from the common unsafe use case: strncat (d, s, strlen (s)); This latter use case is what the warning is designed to help prevent. See also bug 83106 for some more background.
[Bug tree-optimization/66264] [untaken optimization] switch & enums without default-case
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66264 Martin Jambor changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #5 from Martin Jambor --- So I did not do it, but this is now working as requested in trunk (and I believe also gcc 7) and switch conversion loads the value from a table.
[Bug c++/59930] template friend declarations, namespaces, and explicit instantiations don't mix
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59930 --- Comment #2 from Nathan Sidwell --- When we parse the template friend declaration, we're not injecting an invisible template decl into the enclosing namespace. When we instantiate the template we do an unqualified lookup (and ask for hidden objects) from the enclosing namespace. In the first testcase, this fails to find anything. Then we explicitly inject into the global scope, as Richard surmised: /* The friend template has not already been declared. In this case, the instantiation of the template class will cause the injection of this template into the global scope. */ That just seems wrong. Perhaps it was right at some point? In the second testcase we perform the unqualified lookup, but find the ::B, as it's declared at the point of the instantiation. So we make it a friend. Bah. 10.3.1.2/3 talks about invisible friend injection, and AFAICT doesn't prohibit that happening during template parsing time.
[Bug libgomp/83106] [8 regression] libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83106 --- Comment #4 from Jakub Jelinek --- (In reply to Martin Sebor from comment #3) > The warning for strncat helps find similar bugs as for strncpy: defeating > the size constraint by specifying the length of the source rather than the > amount of space in the destination: > > strncat (d, s, strlen (s)); > > This is, of course, equivalent to strcat (d, s) and so an > unnecessary/unintended use of the function. Similar recommendation as for > strncpy also applies to strncat: > > strncat (d, s, sizeof d - strlen (d) - 1); > > See for example: > https://www.us-cert.gov/bsi/articles/knowledge/coding-practices/strncpy-and- > strncat > > The GCC code happens to be safe but there's no good way to distinguish safe > but unintended uses from unsafe ones and so the warning errs on the side of > caution. Only if you misuse strncat for something it has not been designed for. If you already compute strlen (d), it makes no sense to use a function that needs to compute it again. See e.g. https://en.wikipedia.org/wiki/C_string_handling on what it says about these functions. target.c uses strncat properly, trying to use it for security purposes of not overflowing destination is typically just a bug.
[Bug c++/82401] [8 Regression] error: qsort comparator non-negative on sorted output: 1 in insert_late_enum_def_bindings on an invalid code
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82401 Jakub Jelinek changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2017-11-22 Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Jakub Jelinek --- Created attachment 42683 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42683&action=edit gcc8-pr82401.patch Untested fix.
[Bug middle-end/67239] [6 Regression] FAIL: 23_containers/unordered_set/insert/hash_policy.cc execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67239 --- Comment #31 from Marek Polacek --- Author: mpolacek Date: Wed Nov 22 16:06:18 2017 New Revision: 255066 URL: https://gcc.gnu.org/viewcvs?rev=255066&root=gcc&view=rev Log: PR c++/60336 PR middle-end/67239 PR target/68355 * c-decl.c (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields. * class.c (layout_class_type): Set DECL_PADDING_P on padding. * decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P. (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields. * lto.c (compare_tree_sccs_1): Compare TYPE_EMPTY_P and DECL_PADDING_P. * calls.c (initialize_argument_information): Call warn_parameter_passing_abi target hook. (store_one_arg): Use 0 for empty record size. Don't push 0 size argument onto stack. (must_pass_in_stack_var_size_or_pad): Return false for empty types. * common.opt: Update -fabi-version description. * config/i386/i386.c (init_cumulative_args): Set cum->warn_empty. (ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of int_size_in_bytes. (ix86_is_empty_record): New function. (ix86_warn_parameter_passing_abi): New function. (TARGET_EMPTY_RECORD_P): Redefine. (TARGET_WARN_PARAMETER_PASSING_ABI): Redefine. * config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty. * doc/tm.texi: Regenerated. * doc/tm.texi.in (TARGET_EMPTY_RECORD_P, TARGET_WARN_PARAMETER_PASSING_ABI): Add. * dwarf2out.c (get_ultimate_context): Move to tree.c. * explow.c (hard_function_value): Call arg_int_size_in_bytes instead of int_size_in_bytes. * expr.c (copy_blkmode_to_reg): Likewise. * function.c (aggregate_value_p): Return 0 for empty types. (assign_parm_find_entry_rtl): Call warn_parameter_passing_abi target hook. (locate_and_pad_parm): Call arg size_in_bytes instead size_in_bytes. * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P. * stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P. * target.def (empty_record_p, warn_parameter_passing_abi): New target hooks. * targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook. (std_gimplify_va_arg_expr): Skip empty records. Call arg_size_in_bytes instead size_in_bytes. * targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare. * tree-core.h (tree_type_common): Add empty_flag. (tree_decl_common): Update comments. * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream DECL_PADDING_P. (unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P. * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream DECL_PADDING_P. (pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P. * tree.c (default_is_empty_type): New function. (default_is_empty_record): New function. (arg_int_size_in_bytes): New function. (arg_size_in_bytes): New function. (get_ultimate_context): New function. * tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and TRANSLATION_UNIT_WARN_EMPTY_P. (default_is_empty_record, arg_int_size_in_bytes, arg_size_in_bytes, get_ultimate_context): Declare. * g++.dg/abi/empty12.C: New test. * g++.dg/abi/empty12.h: New test. * g++.dg/abi/empty12a.c: New test. * g++.dg/abi/empty13.C: New test. * g++.dg/abi/empty13.h: New test. * g++.dg/abi/empty13a.c: New test. * g++.dg/abi/empty14.C: New test. * g++.dg/abi/empty14.h: New test. * g++.dg/abi/empty14a.c: New test. * g++.dg/abi/empty15.C: New test. * g++.dg/abi/empty15.h: New test. * g++.dg/abi/empty15a.c: New test. * g++.dg/abi/empty16.C: New test. * g++.dg/abi/empty16.h: New test. * g++.dg/abi/empty16a.c: New test. * g++.dg/abi/empty17.C: New test. * g++.dg/abi/empty17.h: New test. * g++.dg/abi/empty17a.c: New test. * g++.dg/abi/empty18.C: New test. * g++.dg/abi/empty18.h: New test. * g++.dg/abi/empty18a.c: New test. * g++.dg/abi/empty19.C: New test. * g++.dg/abi/empty19.h: New test. * g++.dg/abi/empty19a.c: New test. * g++.dg/abi/empty20.C: New test. * g++.dg/abi/empty21.C: New test. * g++.dg/abi/empty22.C: New test. * g++.dg/abi/empty22.h: New test. * g++.dg/abi/empty22a.c: New test. * g++.dg/abi/empty23.C: New test. * g++.dg/abi/empty24.C: New test. * g++.dg/abi/empty25.C: New test. * g++.dg/abi/empty25.h: New test. * g++.dg/abi/empty25a.c: New test. * g++.dg/abi/empty26.C: New test. * g++.dg/abi/empty26.h: New test. * g++.dg/abi/empty26a.c: New test. * g++.dg/abi/em
[Bug target/68355] C++ constexpr is passed on stack
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68355 --- Comment #4 from Marek Polacek --- Author: mpolacek Date: Wed Nov 22 16:06:18 2017 New Revision: 255066 URL: https://gcc.gnu.org/viewcvs?rev=255066&root=gcc&view=rev Log: PR c++/60336 PR middle-end/67239 PR target/68355 * c-decl.c (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields. * class.c (layout_class_type): Set DECL_PADDING_P on padding. * decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P. (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields. * lto.c (compare_tree_sccs_1): Compare TYPE_EMPTY_P and DECL_PADDING_P. * calls.c (initialize_argument_information): Call warn_parameter_passing_abi target hook. (store_one_arg): Use 0 for empty record size. Don't push 0 size argument onto stack. (must_pass_in_stack_var_size_or_pad): Return false for empty types. * common.opt: Update -fabi-version description. * config/i386/i386.c (init_cumulative_args): Set cum->warn_empty. (ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of int_size_in_bytes. (ix86_is_empty_record): New function. (ix86_warn_parameter_passing_abi): New function. (TARGET_EMPTY_RECORD_P): Redefine. (TARGET_WARN_PARAMETER_PASSING_ABI): Redefine. * config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty. * doc/tm.texi: Regenerated. * doc/tm.texi.in (TARGET_EMPTY_RECORD_P, TARGET_WARN_PARAMETER_PASSING_ABI): Add. * dwarf2out.c (get_ultimate_context): Move to tree.c. * explow.c (hard_function_value): Call arg_int_size_in_bytes instead of int_size_in_bytes. * expr.c (copy_blkmode_to_reg): Likewise. * function.c (aggregate_value_p): Return 0 for empty types. (assign_parm_find_entry_rtl): Call warn_parameter_passing_abi target hook. (locate_and_pad_parm): Call arg size_in_bytes instead size_in_bytes. * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P. * stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P. * target.def (empty_record_p, warn_parameter_passing_abi): New target hooks. * targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook. (std_gimplify_va_arg_expr): Skip empty records. Call arg_size_in_bytes instead size_in_bytes. * targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare. * tree-core.h (tree_type_common): Add empty_flag. (tree_decl_common): Update comments. * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream DECL_PADDING_P. (unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P. * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream DECL_PADDING_P. (pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P. * tree.c (default_is_empty_type): New function. (default_is_empty_record): New function. (arg_int_size_in_bytes): New function. (arg_size_in_bytes): New function. (get_ultimate_context): New function. * tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and TRANSLATION_UNIT_WARN_EMPTY_P. (default_is_empty_record, arg_int_size_in_bytes, arg_size_in_bytes, get_ultimate_context): Declare. * g++.dg/abi/empty12.C: New test. * g++.dg/abi/empty12.h: New test. * g++.dg/abi/empty12a.c: New test. * g++.dg/abi/empty13.C: New test. * g++.dg/abi/empty13.h: New test. * g++.dg/abi/empty13a.c: New test. * g++.dg/abi/empty14.C: New test. * g++.dg/abi/empty14.h: New test. * g++.dg/abi/empty14a.c: New test. * g++.dg/abi/empty15.C: New test. * g++.dg/abi/empty15.h: New test. * g++.dg/abi/empty15a.c: New test. * g++.dg/abi/empty16.C: New test. * g++.dg/abi/empty16.h: New test. * g++.dg/abi/empty16a.c: New test. * g++.dg/abi/empty17.C: New test. * g++.dg/abi/empty17.h: New test. * g++.dg/abi/empty17a.c: New test. * g++.dg/abi/empty18.C: New test. * g++.dg/abi/empty18.h: New test. * g++.dg/abi/empty18a.c: New test. * g++.dg/abi/empty19.C: New test. * g++.dg/abi/empty19.h: New test. * g++.dg/abi/empty19a.c: New test. * g++.dg/abi/empty20.C: New test. * g++.dg/abi/empty21.C: New test. * g++.dg/abi/empty22.C: New test. * g++.dg/abi/empty22.h: New test. * g++.dg/abi/empty22a.c: New test. * g++.dg/abi/empty23.C: New test. * g++.dg/abi/empty24.C: New test. * g++.dg/abi/empty25.C: New test. * g++.dg/abi/empty25.h: New test. * g++.dg/abi/empty25a.c: New test. * g++.dg/abi/empty26.C: New test. * g++.dg/abi/empty26.h: New test. * g++.dg/abi/empty26a.c: New test. * g++.dg/abi/emp
[Bug c++/60336] empty struct value is passed differently in C and C++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 --- Comment #50 from Marek Polacek --- Author: mpolacek Date: Wed Nov 22 16:06:18 2017 New Revision: 255066 URL: https://gcc.gnu.org/viewcvs?rev=255066&root=gcc&view=rev Log: PR c++/60336 PR middle-end/67239 PR target/68355 * c-decl.c (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields. * class.c (layout_class_type): Set DECL_PADDING_P on padding. * decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P. (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields. * lto.c (compare_tree_sccs_1): Compare TYPE_EMPTY_P and DECL_PADDING_P. * calls.c (initialize_argument_information): Call warn_parameter_passing_abi target hook. (store_one_arg): Use 0 for empty record size. Don't push 0 size argument onto stack. (must_pass_in_stack_var_size_or_pad): Return false for empty types. * common.opt: Update -fabi-version description. * config/i386/i386.c (init_cumulative_args): Set cum->warn_empty. (ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of int_size_in_bytes. (ix86_is_empty_record): New function. (ix86_warn_parameter_passing_abi): New function. (TARGET_EMPTY_RECORD_P): Redefine. (TARGET_WARN_PARAMETER_PASSING_ABI): Redefine. * config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty. * doc/tm.texi: Regenerated. * doc/tm.texi.in (TARGET_EMPTY_RECORD_P, TARGET_WARN_PARAMETER_PASSING_ABI): Add. * dwarf2out.c (get_ultimate_context): Move to tree.c. * explow.c (hard_function_value): Call arg_int_size_in_bytes instead of int_size_in_bytes. * expr.c (copy_blkmode_to_reg): Likewise. * function.c (aggregate_value_p): Return 0 for empty types. (assign_parm_find_entry_rtl): Call warn_parameter_passing_abi target hook. (locate_and_pad_parm): Call arg size_in_bytes instead size_in_bytes. * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P. * stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P. * target.def (empty_record_p, warn_parameter_passing_abi): New target hooks. * targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook. (std_gimplify_va_arg_expr): Skip empty records. Call arg_size_in_bytes instead size_in_bytes. * targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare. * tree-core.h (tree_type_common): Add empty_flag. (tree_decl_common): Update comments. * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream DECL_PADDING_P. (unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P. * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream DECL_PADDING_P. (pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P. * tree.c (default_is_empty_type): New function. (default_is_empty_record): New function. (arg_int_size_in_bytes): New function. (arg_size_in_bytes): New function. (get_ultimate_context): New function. * tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and TRANSLATION_UNIT_WARN_EMPTY_P. (default_is_empty_record, arg_int_size_in_bytes, arg_size_in_bytes, get_ultimate_context): Declare. * g++.dg/abi/empty12.C: New test. * g++.dg/abi/empty12.h: New test. * g++.dg/abi/empty12a.c: New test. * g++.dg/abi/empty13.C: New test. * g++.dg/abi/empty13.h: New test. * g++.dg/abi/empty13a.c: New test. * g++.dg/abi/empty14.C: New test. * g++.dg/abi/empty14.h: New test. * g++.dg/abi/empty14a.c: New test. * g++.dg/abi/empty15.C: New test. * g++.dg/abi/empty15.h: New test. * g++.dg/abi/empty15a.c: New test. * g++.dg/abi/empty16.C: New test. * g++.dg/abi/empty16.h: New test. * g++.dg/abi/empty16a.c: New test. * g++.dg/abi/empty17.C: New test. * g++.dg/abi/empty17.h: New test. * g++.dg/abi/empty17a.c: New test. * g++.dg/abi/empty18.C: New test. * g++.dg/abi/empty18.h: New test. * g++.dg/abi/empty18a.c: New test. * g++.dg/abi/empty19.C: New test. * g++.dg/abi/empty19.h: New test. * g++.dg/abi/empty19a.c: New test. * g++.dg/abi/empty20.C: New test. * g++.dg/abi/empty21.C: New test. * g++.dg/abi/empty22.C: New test. * g++.dg/abi/empty22.h: New test. * g++.dg/abi/empty22a.c: New test. * g++.dg/abi/empty23.C: New test. * g++.dg/abi/empty24.C: New test. * g++.dg/abi/empty25.C: New test. * g++.dg/abi/empty25.h: New test. * g++.dg/abi/empty25a.c: New test. * g++.dg/abi/empty26.C: New test. * g++.dg/abi/empty26.h: New test. * g++.dg/abi/empty26a.c: New test. * g++.dg/abi/em
[Bug c/80872] There is no warning on accidental infinite loops
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80872 Eric Gallager changed: What|Removed |Added Status|SUSPENDED |RESOLVED Resolution|--- |DUPLICATE --- Comment #2 from Eric Gallager --- (In reply to Eric Gallager from comment #1) > Confirmed that such a warning would be nice to have, but probably impossible > to implement properly due to the halting problem. Thus setting status to > SUSPENDED. actually this is probably a dup of bug 53871 *** This bug has been marked as a duplicate of bug 53871 ***
[Bug c++/60336] empty struct value is passed differently in C and C++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 Marek Polacek changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #51 from Marek Polacek --- Implemented for GCC 8.
[Bug c/53871] Please warn about endless loops if they are obvious
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53871 Eric Gallager changed: What|Removed |Added CC||david at westcontrol dot com --- Comment #9 from Eric Gallager --- *** Bug 80872 has been marked as a duplicate of this bug. ***
[Bug target/68355] C++ constexpr is passed on stack
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68355 Bug 68355 depends on bug 60336, which changed state. Bug 60336 Summary: empty struct value is passed differently in C and C++ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED
[Bug middle-end/67239] [6 Regression] FAIL: 23_containers/unordered_set/insert/hash_policy.cc execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67239 Bug 67239 depends on bug 60336, which changed state. Bug 60336 Summary: empty struct value is passed differently in C and C++ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60336 What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED
[Bug middle-end/67239] [6 Regression] FAIL: 23_containers/unordered_set/insert/hash_policy.cc execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67239 Marek Polacek changed: What|Removed |Added Status|NEW |ASSIGNED CC||mpolacek at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |mpolacek at gcc dot gnu.org
[Bug middle-end/67239] [6 Regression] FAIL: 23_containers/unordered_set/insert/hash_policy.cc execution test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67239 Marek Polacek changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #32 from Marek Polacek --- Should be fixed for GCC 8.
[Bug target/83109] New: [CET] improper code generation for builtin_longjmp with -fcf-protection -mcet
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83109 Bug ID: 83109 Summary: [CET] improper code generation for builtin_longjmp with -fcf-protection -mcet Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: igor.v.tsimbalist at intel dot com Target Milestone: --- As inssp instruction adust the shadow stack pointer (ssp) only by value in the range of [0..255] there should be a loop generated to adjust ssp if the value greater then 255. Currently builtin_longjmp does one time adjustment with incssp.
[Bug libgomp/83106] [8 regression] libgomp/target.c:2671:2: error: ‘strncat’ specified bound 5 equals source length [-Werror=stringop-overflow=]
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83106 --- Comment #5 from Martin Sebor --- Yes, exactly. It's these unintended uses that are a common problem and that the warning is designed to help prevent. They are rare in carefully written code bases like GCC but more common in software developed by less experienced programmers. Often they come up as code is being updated to comply with a security policy (e.g., replace all strcpy/strcat calls with "safe bounded functions"). The warning tries to avoid triggering for the safe uses where it can but there is, unfortunately, not always a good way to do that.
[Bug target/82268] [8 regression] i386/pr82196-1.c fail
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82268 Jakub Jelinek changed: What|Removed |Added Keywords|wrong-code | Status|UNCONFIRMED |RESOLVED CC||jakub at gcc dot gnu.org Resolution|--- |FIXED --- Comment #6 from Jakub Jelinek --- Fixed.
[Bug target/82862] [8 Regression] SPEC CPU2006 465.tonto performance regression with r253975 (up to 40% drop for particular loop)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82862 Jan Hubicka changed: What|Removed |Added Status|ASSIGNED|NEW CC||amker.cheng at gmail dot com, ||vmakarov at redhat dot com Assignee|hubicka at gcc dot gnu.org |unassigned at gcc dot gnu.org --- Comment #5 from Jan Hubicka --- Adding Vladimir and Bin to CC. Perhaps they will have some ideas. I think stack store/restore is not too confusing for RA (it would be nice to get rid of it completely and get frame pointer back).
[Bug middle-end/83069] [8 Regression] internal compiler error: in from_gcov_type, at profile-count.h:676
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83069 --- Comment #2 from seurer at gcc dot gnu.org --- The specific revision this starts failing with is 254888.
[Bug middle-end/83069] [8 Regression] internal compiler error: in from_gcov_type, at profile-count.h:676
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83069 H.J. Lu changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2017-11-22 Ever confirmed|0 |1