[Bug c++/60943] [C++14] Return type deduction interferes with ref-qualifiers
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60943 --- Comment #4 from Anders Sjögren anders at sjogren dot info --- Thanks for fixing the bug! It seems that the test file https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/testsuite/g%2B%2B.dg/cpp1y/pr60943.C?view=markuppathrev=223502 contains an error. It contains: void Bar (A a) { a.f (); } My guess is that it was meant to call the member function from an R-value object a. However, as an l-value at the site of the call, and both Foo and Bar will select the l-value version. Something like std::move(a).f() or just A{}.f(); should do the trick.
[Bug c++/60943] [C++14] Return type deduction interferes with ref-qualifiers
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60943 --- Comment #6 from Anders Sjögren anders at sjogren dot info --- An alternative test case, which also tests that the correct version is selected, could be: #include type_traits using expected_lvalue_res_t = int; using expected_rvalue_res_t = double; struct A { auto f() {return expected_lvalue_res_t{};} auto f() {return expected_rvalue_res_t{};} }; void lvalue_assert() { A a; a.f(); static_assert(std::is_samedecltype(a.f()), expected_lvalue_res_t::value,); } void rvalue_assert() { A{}.f(); static_assert(std::is_samedecltype(A{}.f()), expected_rvalue_res_t::value,); }
[Bug tree-optimization/66233] [4.8/4.9/5/6 Regression] internal compiler error: in expand_fix, at optabs.c:5358
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66233 --- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org --- Author: jakub Date: Fri May 22 08:12:08 2015 New Revision: 223522 URL: https://gcc.gnu.org/viewcvs?rev=223522root=gccview=rev Log: Backported from mainline 2015-05-21 Jakub Jelinek ja...@redhat.com PR tree-optimization/66233 * match.pd (ocvt (icvt@1 @0)): Don't handle vector types. Simplify. * gcc.c-torture/execute/pr66233.c: New test. Added: branches/gcc-5-branch/gcc/testsuite/gcc.c-torture/execute/pr66233.c Modified: branches/gcc-5-branch/gcc/ChangeLog branches/gcc-5-branch/gcc/match.pd branches/gcc-5-branch/gcc/testsuite/ChangeLog
[Bug middle-end/66199] [4.9/5 Regression] lastprivate/linear clause issues on combined constructs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66199 --- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org --- Author: jakub Date: Fri May 22 08:10:32 2015 New Revision: 223521 URL: https://gcc.gnu.org/viewcvs?rev=223521root=gccview=rev Log: Backported from mainline 2015-05-19 Jakub Jelinek ja...@redhat.com PR middle-end/66199 * tree.h (OMP_TEAMS_COMBINED): Define. * gimplify.c (enum gimplify_omp_var_data): Add GOVD_LINEAR_LASTPRIVATE_NO_OUTER. (enum omp_region_type): Add ORT_COMBINED_TEAMS. (omp_notice_variable): Accept both ORT_TEAMS and ORT_COMBINED_TEAMS. Don't recurse if GOVD_LINEAR_LASTPRIVATE_NO_OUTER is set and either GOVD_LINEAR is set, or GOVD_LASTPRIVATE without GOVD_FIRSTPRIVATE. (omp_no_lastprivate): New function. (gimplify_scan_omp_clauses): For OMP_CLAUSE_LASTPRIVATE and OMP_CLAUSE_LINEAR, if omp_no_lastprivate, don't notice_outer and set appropriate bits, otherwise make sure default(none) combined constructs won't complain. (gimplify_adjust_omp_clauses): Remove OMP_CLAUSE_LINEAR outer special casing, for OMP_CLAUSE_LASTPRIVATE if omp_no_lastprivate either remove the clause or turn it into OMP_CLAUSE_PRIVATE. (gimplify_omp_for): Fix up handling of implicit lastprivate or linear iterators. (gimplify_omp_workshare): For OMP_TEAMS_COMBINED use ORT_COMBINED_TEAMS. * omp-low.c (lower_omp_for_lastprivate): For combined for simd use fd.loop.n2 from the for rather than simd. gcc/c/ * c-parser.c (c_parser_omp_for_loop): Don't add OMP_CLAUSE_SHARED to OMP_PARALLEL_CLAUSES when moving OMP_CLAUSE_LASTPRIVATE clause to OMP_FOR_CLAUSES. (c_parser_omp_teams): Set OMP_TEAMS_COMBINED for combined constructs. gcc/cp/ * parser.c (cp_parser_omp_for_loop): Don't add OMP_CLAUSE_SHARED to OMP_PARALLEL_CLAUSES when moving OMP_CLAUSE_LASTPRIVATE clause to OMP_FOR_CLAUSES. (cp_parser_omp_teams): Set OMP_TEAMS_COMBINED for combined constructs. gcc/fortran/ * trans-openmp.c (gfc_trans_omp_teams): Set OMP_TEAMS_COMBINED for combined constructs. (gfc_trans_omp_target): Make sure BIND_EXPR has non-NULL BIND_EXPR_BLOCK. libgomp/ * testsuite/libgomp.c/pr66199-1.c: New test. * testsuite/libgomp.c/pr66199-2.c: New test. * testsuite/libgomp.c++/pr66199-1.C: New test. * testsuite/libgomp.c++/pr66199-2.C: New test. * testsuite/libgomp.fortran/pr66199-1.f90: New test. * testsuite/libgomp.fortran/pr66199-2.f90: New test. Added: branches/gcc-5-branch/libgomp/testsuite/libgomp.c++/pr66199-1.C branches/gcc-5-branch/libgomp/testsuite/libgomp.c++/pr66199-2.C branches/gcc-5-branch/libgomp/testsuite/libgomp.c/pr66199-1.c branches/gcc-5-branch/libgomp/testsuite/libgomp.c/pr66199-2.c branches/gcc-5-branch/libgomp/testsuite/libgomp.fortran/pr66199-1.f90 branches/gcc-5-branch/libgomp/testsuite/libgomp.fortran/pr66199-2.f90 Modified: branches/gcc-5-branch/gcc/ChangeLog branches/gcc-5-branch/gcc/c/ChangeLog branches/gcc-5-branch/gcc/c/c-parser.c branches/gcc-5-branch/gcc/cp/ChangeLog branches/gcc-5-branch/gcc/cp/parser.c branches/gcc-5-branch/gcc/fortran/ChangeLog branches/gcc-5-branch/gcc/fortran/trans-openmp.c branches/gcc-5-branch/gcc/gimplify.c branches/gcc-5-branch/gcc/omp-low.c branches/gcc-5-branch/gcc/tree.h branches/gcc-5-branch/libgomp/ChangeLog
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 --- Comment #7 from Dominik Vogt vogt at linux dot vnet.ibm.com --- Created attachment 35595 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35595action=edit Experimental fix Can you please check whether this patch works for you? The patch also contains improved test cases that should hopefully detect anything like this happening again.
[Bug sanitizer/61071] Compiling with AddressSanitizer with 4.9 breaks printng some variables in gdb
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61071 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2015-05-22 CC||aoliva at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org --- --param asan-use-after-return=0 makes this work, without that in order to support use after return the variables don't live in stack frame (unconditionally), so are based on some pointer (which is assigned either a stack slot address or return value from libasan function), and as -O0 -g doesn't perform var-tracking, it then really depends on register allocation, if the pseudo register holding that pointer is assigned some hard register through the whole function (that is the case with t[36] apparently), or not. For -O0 to have this working reliably, supposedly we'd have to store that pointer into the stack and turning it into an artificial var, then add DECL_VALUE_EXPR for all the other stack vars if they are based on this pointer (Alex, any other thoughts?). For -O1+/-Og/-Os, I'm surprised var-tracking doesn't handle this.
[Bug middle-end/66133] Wrong-code with noreturn #pragma omp task body
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66133 --- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org --- Author: jakub Date: Fri May 22 08:04:41 2015 New Revision: 223520 URL: https://gcc.gnu.org/viewcvs?rev=223520root=gccview=rev Log: Backported from mainline 2015-05-13 Jakub Jelinek ja...@redhat.com PR middle-end/66133 * omp-low.c (expand_omp_taskreg): For GIMPLE_OMP_TASK expansion, make sure it is never noreturn, even when the task body does not return. (lower_omp_taskreg): For GIMPLE_OMP_TASK, emit GIMPLE_OMP_CONTINUE right before GIMPLE_OMP_RETURN. (make_gimple_omp_edges): Accept GIMPLE_OMP_CONTINUE as -cont for GIMPLE_OMP_TASK. For GIMPLE_OMP_RETURN corresponding to GIMPLE_OMP_TASK add an EDGE_ABNORMAL edge from entry to exit. * testsuite/libgomp.c/pr66133.c: New test. Added: branches/gcc-5-branch/libgomp/testsuite/libgomp.c/pr66133.c Modified: branches/gcc-5-branch/gcc/ChangeLog branches/gcc-5-branch/gcc/omp-low.c branches/gcc-5-branch/libgomp/ChangeLog
[Bug sanitizer/61071] Compiling with AddressSanitizer with 4.9 breaks printng some variables in gdb
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61071 --- Comment #2 from Krzysztof Kundzicz athantor+gccbugzilla at athi dot pl --- GCC 5.1 - no change. Compiling with clang generates debugable binary. Bug report at ASAN project: https://code.google.com/p/address-sanitizer/issues/detail?id=390
[Bug c/47043] allow deprecating enum values
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47043 --- Comment #4 from Marek Polacek mpolacek at gcc dot gnu.org --- Author: mpolacek Date: Fri May 22 09:07:31 2015 New Revision: 223527 URL: https://gcc.gnu.org/viewcvs?rev=223527root=gccview=rev Log: PR c/47043 * c-common.c (handle_deprecated_attribute): Allow CONST_DECL. * c-parser.c (c_parser_enum_specifier): Parse and apply enumerator attributes. * cp-tree.h (build_enumerator): Update declaration. * decl.c (build_enumerator): Add attributes parameter. Call cplus_decl_attributes. * init.c (constant_value_1): Pass tf_none to mark_used. * parser.c (cp_parser_enumerator_definition): Parse attributes and pass them down to build_enumerator. * pt.c (tsubst_enum): Pass decl attributes to build_enumerator. * semantics.c (finish_id_expression): Don't warn_deprecated_use here. * doc/extend.texi (Enumerator Attributes): New section. Document syntax of enumerator attributes. * c-c++-common/attributes-enum-1.c: New test. * c-c++-common/attributes-enum-2.c: New test. * g++.dg/cpp0x/attributes-enum-1.C: New test. * g++.dg/cpp1y/attributes-enum-1.C: New test. Added: trunk/gcc/testsuite/c-c++-common/attributes-enum-1.c trunk/gcc/testsuite/c-c++-common/attributes-enum-2.c trunk/gcc/testsuite/g++.dg/cpp0x/attributes-enum-1.C trunk/gcc/testsuite/g++.dg/cpp1y/attributes-enum-1.C Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-common.c trunk/gcc/c/ChangeLog trunk/gcc/c/c-parser.c trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/decl.c trunk/gcc/cp/init.c trunk/gcc/cp/parser.c trunk/gcc/cp/pt.c trunk/gcc/cp/semantics.c trunk/gcc/doc/extend.texi trunk/gcc/testsuite/ChangeLog
[Bug c++/56926] Crash (without ICE) while compiling Boost.Math
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56926 --- Comment #13 from asmwarrior asmwarrior at gmail dot com --- I did some further test with the condition I stated in comment 11. That is gcc 5.1. Now, I have pch.h.gch file (about 200M) already generated. First thing, I try to see whether preprocessor works OK, so I add the -E option. For test.cpp file -- #include pch.h int main() { int a; int b; int c; a++; b++; } -- Run the command: g++.exe -v -E -Wall -fexceptions -g -march=core2 -Wall -ID:\mingw-builds\boost_1_55_0 -Winvalid-pch -include pch.h test.cpp -o have-include.i Then I comment out the first line -- //#include pch.h int main() { int a; int b; int c; a++; b++; } -- Then run the command below: g++.exe -v -E -Wall -fexceptions -g -march=core2 -Wall -ID:\mingw-builds\boost_1_55_0 -Winvalid-pch -include pch.h test.cpp -o no-include.i Then I compare the result: Both have-include.i and no-include.i are about 7M, I see the they are nearly the same, expect the have-include.i have two extra lines. Here is the have-include.i -- ... ... #pragma GCC diagnostic pop # 1 command-line 2 # 1 test.cpp # 1 pch.h 1 # 2 test.cpp 2 int main() { int a; int b; int c; a++; b++; } --- Here is no-include.i -- ... ... #pragma GCC diagnostic pop # 1 command-line 2 # 1 test.cpp int main() { int a; int b; int c; a++; b++; } -- Now, I try to build those .i files to object files with those command: g++.exe -v -Wall -fexceptions -g -march=core2 -Wall -c no-include.i -o no-include.o g++.exe -v -Wall -fexceptions -g -march=core2 -Wall -c have-include.i -o have-include.o Result is: I get the same result no-include.o and have-include.o. (Yes, they are exactly same in every bytes) Now, I did other test like below: g++.exe -v -Wall -fexceptions -g -march=core2 -Wall -ID:\mingw-builds\boost_1_55_0 -Winvalid-pch -include pch.h -c test.cpp -o have-include-c.o -save-temps Here, I have -save-temps put in the command option, I get no have-include-c.o file generated, also I get an empty test.ii generated. Here is the log: -- ... ... D:\mingw-builds\boost_1_55_0 e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/../../../../include/c++/5.1.1 e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/../../../../include/c++/5.1.1/i686-w64-mi ngw32 e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/../../../../include/c++/5.1.1/backward e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/include e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/include-fixed e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/../../../../i686-w64-mingw32/include End of search list. -- Now, if I remove the -save-temps option, and run below: g++.exe -v -Wall -fexceptions -g -march=core2 -Wall -ID:\mingw-builds\boost_1_55_0 -Winvalid-pch -include pch.h -c test.cpp -o have-include-c.o Still no have-include-c.o file, but this time, the log message has some extra lines: -- ... ... D:\mingw-builds\boost_1_55_0 e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/../../../../include/c++/5.1.1 e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/../../../../include/c++/5.1.1/i686-w64-mi ngw32 e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/../../../../include/c++/5.1.1/backward e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/include e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/include-fixed e:\code\gcc\dongsheng-daily\gcc-5-win32\bin\../lib/gcc/i686-w64-mingw32/5.1.1/../../../../i686-w64-mingw32/include End of search list. GNU C++ (GCC) version 5.1.1 20150512 (i686-w64-mingw32) compiled by GNU C version 5.1.1 20150512, GMP version 5.1.3, MPFR version 3.1.2-p11, MPC version 1.0.3 GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: af290162d8f9d7b22486b8d9679fb0bb -- So, it looks like happens after the preprocessor has successfully read the pch file, when it(cc1plus.exe) try to start the parsing, it get crashed, but under my Windows XP, I don't see any message or dialog shown up when it crashed.
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 --- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org --- Doesn't this disable all the other s390 tests? Supposedly you need to prune them from the non-torture lists, see e.g. g++.dg/dg.exp on how it prunes tests.
[Bug c/47043] allow deprecating enum values
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47043 Marek Polacek mpolacek at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #5 from Marek Polacek mpolacek at gcc dot gnu.org --- Done.
[Bug c++/60943] [C++14] Return type deduction interferes with ref-qualifiers
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60943 --- Comment #5 from Anders Sjögren anders at sjogren dot info --- A typo snuck in... However, as an l-value at the site of the call[...] should be However, a is an l-value at the site of the call[...]
[Bug tree-optimization/65752] Too strong optimizations int - pointer casts
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65752 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added CC||law at gcc dot gnu.org --- Comment #32 from Richard Biener rguenth at gcc dot gnu.org --- (In reply to Chung-Kil Hur from comment #29) Dear Richard, This time, I think I constructed a real bug. Please have a look and correct me if I am wrong. = #include stdio.h int main() { int x = 0; uintptr_t xp = (uintptr_t) x; uintptr_t i; for (i = 0; i xp; i++) { } *(int*)xp = 15; printf(%d\n, x); } = This program prints 15 and I do not think this raises UB. Now I add an if-statement to the program. = #include stdio.h int main() { int x = 0; uintptr_t xp = (uintptr_t) x; uintptr_t i; for (i = 0; i xp; i++) { } /*** begin ***/ if (xp != i) { printf(hello\n); xp = i; } /*** end ***/ *(int*)xp = 15; printf(%d\n, x); } = This program just prints 0. Since hello is not printed, the if-statement is not executed. However, it prints a different result than before, which I think is a bug. It indeed is a more unfortunate case but you are still breaking the dependency chain in the if (xp != i) code by assigning i to xp. The code is never executed (which is why this is unfortunate) and I am less than 100% sure it still invokes undefined behavior. The unfortunate thing is that the equivalence you build on the 'else' path (xp == i) is used by the compiler to replace xp by i on the *(int*)xp = 15 line getting us into the very same situation as in all other cases. That is, we have if (xp != i) ... # xp = PHI xp, i *(int *)xp = 15; because of the conditional and in this case our phiopt pass optimizes that to # xp = PHI i, i instead of the equally valid # xp = PHI xp, xp other passes (dom) may end up doing a similar thing (at least for GCC 5 and the particular testcase we are lucky here though), but for GCC 5 -fdisable-tree-phiopt1 -fdisable-tree-phiopt2 avoids the issue. Generally there is no good way to determine which choice is better. What the PTA code does is sensible btw. For # xp_20 = PHI 0(2), xp_7(7) xp_7 = xp_20 + 1; if (xp_6 xp_7) goto bb 7; else goto bb 4; bb 7: goto bb 3; the PTA constraints are xp_6 = x xp_20 = NULL xp_20 = xp_7 xp_7 = xp_20 xp_7 = NONLOCAL which means PTA considers that all pointers coming from integer constants point to global memory only (that's to support fixed address objects). That helps to avoid false aliasing to stack objects and avoids the need to make all locals escaped when you have code passing an integer to a function (that integer, converted to a pointer _could_ point to a stack slot in the caller, no?!). So 'i' is considered to eventually point to arbitrary global memory. But _not_ to arbitrary address-taken locals.
[Bug middle-end/66251] New: [6 Regression] ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1484
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66251 Bug ID: 66251 Summary: [6 Regression] ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1484 Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: Joost.VandeVondele at mat dot ethz.ch Target Milestone: --- recent regression (last day): gcc version 6.0.0 20150522 (experimental) [trunk revision 223512] (GCC) cat bug.f90 SUBROUTINE dbcsr_data_convert (n) COMPLEX(KIND=4), DIMENSION(:), POINTER :: s_data_c COMPLEX(KIND=8), DIMENSION(:), POINTER :: t_data_z t_data_z(1:n) = CMPLX(s_data_c(1:n), KIND=8) CALL foo() END SUBROUTINE dbcsr_data_convert gfortran -c -O3 bug.f90 bug.f90:1:0: SUBROUTINE dbcsr_data_convert (n) ^ internal compiler error: in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1484 0xd97159 vect_get_vec_def_for_operand(tree_node*, gimple_statement_base*, tree_node**) ../../gcc/gcc/tree-vect-stmts.c:1484 0xda51e3 vectorizable_store ../../gcc/gcc/tree-vect-stmts.c:5315 0xda7fbd vect_transform_stmt(gimple_statement_base*, gimple_stmt_iterator*, bool*, _slp_tree*, _slp_instance*) ../../gcc/gcc/tree-vect-stmts.c:7466 0xdc6279 vect_schedule_slp_instance ../../gcc/gcc/tree-vect-slp.c:3502 0xdc6a90 vect_schedule_slp(_loop_vec_info*, _bb_vec_info*) ../../gcc/gcc/tree-vect-slp.c:3572 0xdafdf7 vect_transform_loop(_loop_vec_info*) ../../gcc/gcc/tree-vect-loop.c:6165 0xdcea3e vectorize_loops() ../../gcc/gcc/tree-vectorizer.c:502 Please submit a full bug report,
[Bug lto/66103] [6 Regression] ICE verify_type failed with LTO and -g -O0 via dwarf2out.c's gen_type_die_with_usage
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66103 --- Comment #3 from Tobias Burnus burnus at gcc dot gnu.org --- Due to r223391, a variant of this already fails without LTO - see PR66214.
[Bug middle-end/66214] [6 Regression] ICE verify_type failed with -O0 -g via gen_type_die_with_usage's dwarf2out.c:20250
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66214 --- Comment #3 from Tobias Burnus burnus at gcc dot gnu.org --- Works after reverting Honza's r223391.
[Bug middle-end/66251] [6 Regression] ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1484
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66251 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2015-05-22 Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org Target Milestone|--- |6.0 Ever confirmed|0 |1 --- Comment #1 from Richard Biener rguenth at gcc dot gnu.org --- Mine.
[Bug ipa/65701] [5/6 Regression] r221530 makes 187.facerec drop with -Ofast -flto on bdver2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65701 --- Comment #17 from Richard Biener rguenth at gcc dot gnu.org --- Author: rguenth Date: Fri May 22 09:08:46 2015 New Revision: 223528 URL: https://gcc.gnu.org/viewcvs?rev=223528root=gccview=rev Log: 2015-05-22 Richard Biener rguent...@suse.de PR tree-optimization/65701 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Move peeling cost models into one place. Peel for alignment for single loads only if an aligned load is cheaper than an unaligned load. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-vect-data-refs.c
[Bug c/66240] RFE: extend -falign-xyz syntax
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66240 --- Comment #3 from Josh Triplett josh at joshtriplett dot org --- (In reply to Denis Vlasenko from comment #2) (In reply to Josh Triplett from comment #1) Another alternative discussed in that thread, which seems near-ideal: align functions to a given size (for instance, 64 bytes), pack them into that size if they fit, but avoid splitting a function across that boundary unless it's larger than that boundary. Josh, I would be more than happy to see gcc/ld becoming clever enough to pack functions intelligently (say, align big ones to cacheline boundaries, and fit tiny ones into the resulting padding holes). I'm afraid in the current state of gcc code, that'll be a very tall order to fulfil. In this BZ, I'm asking for something easy-ish to be done. Fair enough; just wanted to get the notion on the radar. Not because we have to wait for the perfect solution, but because the design for improved alignment options should take into account the possibility of additional future expansion.
[Bug c++/66256] New: noexcept evaluation done before end of class
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66256 Bug ID: 66256 Summary: noexcept evaluation done before end of class Product: gcc Version: 5.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: qigopsrtv at gmail dot com Target Milestone: --- The following code does not compile (with -std=c++11): struct test { // it only works if e is declared before test() test() noexcept(e) {} static const bool e = false; }; int main() {} It gives me error:'e' was not declared in this scope, while 'e' should be visible, even though it is declared after test(). It is my understanding of the standard that the expression evaluation inside noexcept should be done once all class members are parsed (cf. 9.2/2 of n3337). $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: /build/gcc/src/gcc-5-20150519/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --with-default-libstdcxx-abi=c++98 Thread model: posix gcc version 5.1.0 (GCC)
[Bug fortran/66257] [5/6 Regression] ELEMENTAL procedure pointer component XX is not allowed as an actual argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66257 --- Comment #3 from Mikael Morin mikael at gcc dot gnu.org --- (In reply to Dominique d'Humieres from comment #1) Although I have marked the PR as a regression, I am not sure that it is not INVALID: the error has been introduced on purpose. I think the error applies to procedure pointers, not to the result of procedure pointer calls. I haven't checked the standard yet though.
[Bug fortran/66079] [6 Regression] memory leak with source allocation in internal subprogram
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66079 --- Comment #5 from Paul Thomas pault at gcc dot gnu.org --- Created attachment 35603 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35603action=edit Nearly OK patch The attached bootstraps and regtests on 6.0.0. The following runs without memory leaks and fixes problems as indicated: type subdata integer, allocatable :: b endtype ! block call newRealVec ! end block contains subroutine newRealVec type(subdata), allocatable :: d, e, f character(:), allocatable :: g, h, i allocate(d,source=subdata(1)) ! memory was lost, now OK allocate(e,source=d) ! OK allocate(f,source=create (99)) ! memory was lost, now OK if (d%b .ne. 1) call abort if (e%b .ne. 1) call abort if (f%b .ne. 99) call abort allocate (g, source = greeting1(good day)) if (g .ne. good day) call abort allocate (h, source = greeting2(hello)) if (h .ne. hello) call abort allocate (i, source = greeting3(hiya!)) if (i .ne. hiya!) call abort end subroutine function create (arg) result(res) integer :: arg type(subdata), allocatable :: res allocate(res, source = subdata(arg)) end function function greeting1 (arg) result(res) ! memory was lost, now OK character(*) :: arg Character(:), allocatable :: res allocate(res, source = arg) end function function greeting2 (arg) result(res) character(5) :: arg Character(:), allocatable :: res allocate(res, source = arg) end function function greeting3 (arg) result(res) character(5) :: arg Character(5), allocatable :: res, res1 allocate(res, source = arg) ! Caused an ICE - now OK allocate(res1, source = arg) ! Caused an ICE - now OK if (res1 .ne. res) call abort end function end Just a small amount of cleaning up to do before submission. Paul
[Bug fortran/66257] New: Regression: ELEMENTAL procedure pointer component XX is not allowed as an actual argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66257 Bug ID: 66257 Summary: Regression: ELEMENTAL procedure pointer component XX is not allowed as an actual argument Product: gcc Version: 5.1.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: gccbugreport.hgitnskl at gmail dot com Target Milestone: --- Created attachment 35602 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35602action=edit Test code for the error Hi everyone, I think this is a regression for the fortran compiler. The given test code in attachment was working in 4.9. The errors are: Erreur: ELEMENTAL procedure pointer component ‘e’ is not allowed as an actual argument at (1) test.f90:54:11: Om = log10(self%E(z)) 1 Erreur: ELEMENTAL procedure pointer component ‘e’ is not allowed as an actual argument at (1) The argument, which is a double, is treated as the procedure.
[Bug fortran/66257] [5/6 Regression] ELEMENTAL procedure pointer component XX is not allowed as an actual argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66257 Mikael Morin mikael at gcc dot gnu.org changed: What|Removed |Added CC||mikael at gcc dot gnu.org --- Comment #2 from Mikael Morin mikael at gcc dot gnu.org --- Draft patch, not tested diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index fbf260f..a46ab60 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1981,7 +1981,8 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype, } comp = gfc_get_proc_ptr_comp(e); - if (comp comp-attr.elemental) + if (e-expr_type == EXPR_VARIABLE + comp comp-attr.elemental) { gfc_error (ELEMENTAL procedure pointer component %qs is not allowed as an actual argument at %L, comp-name,
[Bug rtl-optimization/66237] [6 regression] FAIL: gcc.dg/tree-prof/pr34999.c compilation, -fprofile-use -D_PROFILE_USE (internal compiler error)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66237 --- Comment #6 from Mikhail Maltsev miyuki at gcc dot gnu.org --- Author: miyuki Date: Fri May 22 22:58:22 2015 New Revision: 223596 URL: https://gcc.gnu.org/viewcvs?rev=223596root=gccview=rev Log: PR rtl-optimization/66237 * bb-reorder.c (fix_crossing_conditional_branches): Fix wrong location of an as_a cast. Modified: trunk/gcc/ChangeLog trunk/gcc/bb-reorder.c
[Bug middle-end/66251] [6 Regression] ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1484
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66251 Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch changed: What|Removed |Added CC||Joost.VandeVondele at mat dot ethz ||.ch --- Comment #5 from Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch --- (In reply to Richard Biener from comment #2) I have a fix for the ICE: thanks! but I'm not sure we create correct code here. Joost - can you produce a runtime testcase that verifies correctness? well spotted... the following fails with obviously wrong results: cat bug.f90 MODULE M1 CONTAINS SUBROUTINE dbcsr_data_convert (s_data_c,t_data_z,n) COMPLEX(KIND=4), DIMENSION(:), POINTER :: s_data_c COMPLEX(KIND=8), DIMENSION(:), POINTER :: t_data_z t_data_z(1:n) = CMPLX(s_data_c(1:n), KIND=8) END SUBROUTINE dbcsr_data_convert END MODULE M1 USE M1 INTEGER :: n=2 COMPLEX(KIND=4), DIMENSION(:), POINTER :: s_data_c COMPLEX(KIND=8), DIMENSION(:), POINTER :: t_data_z REAL(KIND=8) :: diff ALLOCATE(s_data_c(n),t_data_z(n)) s_data_c=(/(i,i=1,n)/)+(/(i,i=1,n)/)*(0,42) call dbcsr_data_convert (s_data_c,t_data_z,n) diff=ABS(t_data_z(n)-s_data_c(n)) IF (diff2*EPSILON(1.0_4)) THEN write(6,*) s_data_c write(6,*) t_data_z CALL ABORT() ENDIF END gfortran -O3 -march=native -fno-inline bug.f90 ; ./a.out ( 1., 42.000) ( 2., 84.000) ( 1. , 1.0242026242921894E-312) ( 42.000 , 0. ) Program aborted. Backtrace: #0 0x7F593AA0CC97 #1 0x7F593AA0DAD2 #2 0x7F593AADD128 #3 0x401233 in MAIN__ at bug.f90:? Aborted
[Bug fortran/66257] [5/6 Regression] ELEMENTAL procedure pointer component XX is not allowed as an actual argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66257 Dominique d'Humieres dominiq at lps dot ens.fr changed: What|Removed |Added Priority|P3 |P4 Status|UNCONFIRMED |NEW Last reconfirmed||2015-05-22 CC||burnus at gcc dot gnu.org, ||janus at gcc dot gnu.org Summary|Regression: ELEMENTAL |[5/6 Regression] ELEMENTAL |procedure pointer component |procedure pointer component |XX is not allowed as an |XX is not allowed as an |actual argument |actual argument Ever confirmed|0 |1 Severity|major |normal --- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr --- Likely introduced by revision r218751 for pr63727 (see the thread starting at https://gcc.gnu.org/ml/fortran/2014-12/msg00075.html). Although I have marked the PR as a regression, I am not sure that it is not INVALID: the error has been introduced on purpose.
[Bug c++/56926] Crash (without ICE) while compiling Boost.Math
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56926 --- Comment #14 from asmwarrior asmwarrior at gmail dot com --- The bug can be seen when -E and -fpch-preprocess is used together to generate a preprocessed file. If I have a small pch file named spch.h and spch.h.gch(note the spch.h.gch size is about 47M), and if I have a test.cpp like below: -- #include spch.h int main() { int a; int b; int c; a++; b++; } -- Then, run the command: g++.exe -v -E -Wall -fexceptions -g -march=core2 -Wall -ID:\mingw-builds\boost_1_55_0 -Winvalid-pch -include spch.h test.cpp -fpch-preprocess -o xxx.ii -ftime-report I will get a xxx.ii containing such contents: -- # 1 test.cpp # 1 D:\\mingw-builds\\test-51// # 1 built-in # 1 command-line #pragma GCC pch_preprocess ./spch.h.gch # 1 test.cpp # 1 spch.h 1 # 2 test.cpp 2 int main() { int a; int b; int c; a++; b++; } -- You see, the line #pragma GCC pch_preprocess ./spch.h.gch is generated correctly, which means G++ load the pch file correctly. (That's what the -fpch-preprocess option used for, see: https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html) But if I use a big pch file pch.h.gch, and run the similar command line like above, I don't see any .ii file generated, which means G++ crashed before log out the line #pragma GCC pch_preprocess By reading the source code, I see that in gcc-4.9.2\gcc\c-family\c-ppoutput.c, there is a function: /* Load in the PCH file NAME, open on FD. It was originally searched for by ORIG_NAME. Also, print out a #include command so that the PCH file can be loaded when the preprocessed output is compiled. */ static void cb_read_pch (cpp_reader *pfile, const char *name, int fd, const char *orig_name ATTRIBUTE_UNUSED) { c_common_read_pch (pfile, name, fd, orig_name); fprintf (print.outf, #pragma GCC pch_preprocess \%s\\n, name); print.src_line++; } So, the bug happens before the fprintf() function, maybe inside the c_common_read_pch function call. I would like to see anyone can supply a debug version of 32bit cc1plus.exe, so that I can hunt the bug further under GDB, because building the whole gcc tool chain is too difficult for me.
[Bug other/66259] New: Combined gcc and binutils build from git-master fails, with gas/as-new not existing
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66259 Bug ID: 66259 Summary: Combined gcc and binutils build from git-master fails, with gas/as-new not existing Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other Assignee: unassigned at gcc dot gnu.org Reporter: darlingm at gmail dot com Target Milestone: --- Posted this first at binutils. Alan Modra said Not a binutils bug. and closed it, at https://sourceware.org/bugzilla/show_bug.cgi?id=18450 On a fresh Fedora 21 install: sudo yum install git gcc gcc-c++ texinfo-tex flex bison mpfr-devel gmp-devel libmpc-devel isl isl-devel mkdir gcc.binutils.combined cd gcc.binutils.combined git clone git://gcc.gnu.org/git/gcc.git gcc.git git clone git://sourceware.org/git/binutils-gdb.git binutils-gdb.git mkdir combined cd combined ln -s ../gcc.git/* . ln --force -s ../binutils-gdb.git/* . mkdir ../../gcc.binutils.combined.build.gcc cd ../../gcc.binutils.combined.build.gcc ../gcc.binutils.combined/combined/configure --disable-multilib make sudo make install Wind up getting: ../gcc.binutils.combined.build.gcc/./prev-gcc/as: line 106: ../gcc.binutils.combined.build.gcc/./gas/as-new: No such file or directory Line 106 is: exec $original ${1+$@} # with $original coming from case $original in With: [gcc.binutils.combined.build.gcc]$ find . | grep as-new ./prev-gas/as-new Should gcc.binutils.combined.build.gcc/./prev-gcc/as:106 be calling ./prev-gas/as-new rather than ./gas/as-new ?
[Bug target/66258] New: compiling a stdarg function with arch +nofp generates an ICE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66258 Bug ID: 66258 Summary: compiling a stdarg function with arch +nofp generates an ICE Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: wilson at gcc dot gnu.org Target Milestone: --- palantir:2187$ more tmp.c #include stdarg.h int sub (int num, ...) { va_list ap; int j; va_start (ap, num); j = va_arg (ap, int); va_end (ap); return j; } palantir:2188$ ./xgcc -B./ -O -S tmp.c -mcpu=cortex-a53+nofp tmp.c: In function ‘sub’: tmp.c:14:1: error: unrecognizable insn: } ^ (insn 86 9 87 2 (set (reg:DI 0 x0 [101]) (truncate:DI (reg:TI 32 v0))) tmp.c:5 -1 (nil)) tmp.c:14:1: internal compiler error: in extract_insn, at recog.c:2329 0xa32b9a _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) ../../gcc-svn/gcc/rtl-error.c:110 0xa32bc9 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) ../../gcc-svn/gcc/rtl-error.c:118 0xa078e7 extract_insn(rtx_insn*) ../../gcc-svn/gcc/recog.c:2329 0xa07964 extract_insn_cached(rtx_insn*) ../../gcc-svn/gcc/recog.c:2220 0x79df7d cleanup_subreg_operands(rtx_insn*) ../../gcc-svn/gcc/final.c:3140 0xa05277 split_insn ../../gcc-svn/gcc/recog.c:2943 0xa09cc7 split_all_insns() ../../gcc-svn/gcc/recog.c:2997 0xa09d52 rest_of_handle_split_after_reload ../../gcc-svn/gcc/recog.c:3938 0xa09d52 execute ../../gcc-svn/gcc/recog.c:3967 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See http://gcc.gnu.org/bugs.html for instructions. palantir:2189$ The problem is that all of the FP move patterns in the aarch64.md file use TARGET_FLOAT, which checks both -mgeneral-regs-only and architecture fp support. However, the stdarg code is only checking TARGET_GENERAL_REGS_ONLY. It needs to use TARGET_FLOAT instead. There is the same problem in the secondary reloads code and in the function value regno code. Patch to be submitted shortly.
[Bug other/66259] Combined gcc and binutils build from git-master fails, with gas/as-new not existing
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66259 --- Comment #1 from Michael Darling darlingm at gmail dot com --- BTW, this happens on stage 2. Uncombined build works just fine... If I: mkdir binutils.build.gcc492 cd binutils.build.gcc492 ../gcc.binutils.combined/binutils-gdb.git/configure --disable-multilib make sudo make install ^^ this uses gcc 4.9.2 Or, even if I: mkdir gcc.build.gcc cd gcc.build.gcc ../gcc.binutils.combined/gcc.git/configure --disable-multilib make sudo make install hash -r // add /usr/local/lib64 to ldconfig, and run ldconfig mkdir ../binutils.build.gcc6 cd ../binutils.build.gcc6 ../gcc.binutils.combined/binutils-gdb.git/configure --disable-multilib make sudo make install ^^ case uses gcc6 // then I can even ldconfig mkdir ../gcc.build.gcc6.with.new.binutils cd ../gcc.build.gcc6.with.new.binutils ../gcc.binutils.combined/gcc.git/configure --disable-multilib make sudo make install
[Bug libstdc++/53477] pretty printer fails with: Python Exception type 'exceptions.IndexError' list index out of range
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53477 --- Comment #22 from Tomasz Gajewski tomga at wp dot pl --- In comment #10 I've provided test patch to test case that exposed a problem (and in comment #11 some fix to all those tests). Currently I can't check if it applies cleanly and if errors occur. If you want probably I can find some time in next few weeks.
[Bug other/63387] Optimize pairs of isnan() calls into a single isunordered()
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63387 --- Comment #8 from Marc Glisse glisse at gcc dot gnu.org --- Author: glisse Date: Fri May 22 21:05:26 2015 New Revision: 223591 URL: https://gcc.gnu.org/viewcvs?rev=223591root=gccview=rev Log: 2015-05-22 Marc Glisse marc.gli...@inria.fr PR tree-optimization/63387 gcc/ * match.pd ((X /[ex] A) * A - X): Remove unnecessary condition. ((x ord x) (y ord y) - (x ord y), (x ord x) (x ord y) - (x ord y)): New simplifications. * fold-const.c (tree_unary_nonnegative_warnv_p) ABS_EXPR: Handle vectors like scalars. gcc/testsuite/ * gcc.dg/pr63387-2.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/pr63387-2.c Modified: trunk/gcc/ChangeLog trunk/gcc/fold-const.c trunk/gcc/match.pd trunk/gcc/testsuite/ChangeLog
[Bug c++/66260] New: [C++14] Failure to compile variable template with recursively defined partial specialization
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66260 Bug ID: 66260 Summary: [C++14] Failure to compile variable template with recursively defined partial specialization Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: Casey at Carter dot net Target Milestone: --- Created attachment 35604 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35604action=edit testcase.cpp Both GCC 5.1.0 and 6.0 fail to compile this program: template class constexpr bool foo = false; template constexpr bool fooint = true; template class T, int N constexpr bool fooT[N] = fooT; static_assert(fooint, ); static_assert(!foodouble, ); static_assert(fooint[3], ); static_assert(!foodouble[3], ); static_assert(fooint[2][5][3], ); static_assert(!foodouble[2][5][3], ); int main() {} 5.1.0 doesn't seem to recognize that foo is a template-name in the definition of the fooT[N] partial specialization: prog.cc:6:33: error: expected primary-expression before '' token constexpr bool fooT[N] = fooT; ^ prog.cc:6:34: error: expected primary-expression before ';' token constexpr bool fooT[N] = fooT; ^ prog.cc:6: confused by earlier errors, bailing out 6.0 20150522 at least tries to compile the recursion, but fails nonetheless: prog.cc: In instantiation of 'constexpr const bool foo': prog.cc:6:16: recursively required from 'constexpr const bool foo' prog.cc:6:16: required from 'constexpr const bool foo' prog.cc:10:15: required from here prog.cc:6:16: fatal error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) constexpr bool fooT[N] = fooT; ^ compilation terminated.
[Bug c++/66255] [6 Regression] ice in retrieve_specialization
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66255 Mikhail Maltsev miyuki at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Known to work||4.9.2, 5.1.0 Keywords||ice-on-valid-code Last reconfirmed||2015-05-23 CC||miyuki at gcc dot gnu.org Ever confirmed|0 |1 Summary|ice in |[6 Regression] ice in |retrieve_specialization |retrieve_specialization Known to fail||6.0 --- Comment #1 from Mikhail Maltsev miyuki at gcc dot gnu.org --- Reduced testcase: typedef int int_t; template int_t struct S { }; int_t a; S a b;
[Bug ipa/66223] [5/6 Regression] Diagnostic of pure virtual function call broken, including __cxa_pure_virtual
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66223 Jonathan Wakely redi at gcc dot gnu.org changed: What|Removed |Added Status|WAITING |NEW Component|c++ |ipa Summary|Diagnostic of pure virtual |[5/6 Regression] Diagnostic |function call broken, |of pure virtual function |including |call broken, including |__cxa_pure_virtual |__cxa_pure_virtual --- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org --- With -O2 you just get a segfault. With -O1 or -O2 -fno-devirtualize you get the old output.
[Bug c++/65415] using, base class static member function template, and decltype
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65415 Paolo Carlini paolo.carlini at oracle dot com changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |DUPLICATE --- Comment #3 from Paolo Carlini paolo.carlini at oracle dot com --- Closing as Dup. We may want to add the testcase, though, it's slightly different. *** This bug has been marked as a duplicate of bug 65061 ***
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 --- Comment #11 from Dominik Vogt vogt at linux dot vnet.ibm.com --- (In reply to Jakub Jelinek from comment #10) As for the hotpatch testcases, have you tested them also with -fno-dwarf2-cfi-asm (as they seem to contain .cfi directives in the regexps)? Not yet. I'll add another test case for that. The regexp is supposed to skip all lines with .cfi_... or labels matching .L*:, so -fno-dwarf2-cfi-asm should not matter, but testing is besser than guessing. And for the main patch, the change will revert the order of 2, 4 and 6 byte nops post-label The order is the same because the patch never updates insn. The order would be reversed if I had written insn = emit_before_insn (...), keeping the assignment. The tests indirectly verify that the order is correct. For example, hotpatch-5.c tests that with -mhotpatch=...,4 the first instruction after the comment is a 6-byte-NOP: hp1: # post-label NOPs for hotpatch (4 halfwords) .LFB0: .cfi_startproc brcl0, 0 nopr%r7 stmg%r11,%r15,88(%r15) is that ok? No, that would be incorrect. It is important that the largest NOP comes first
[Bug c++/65061] [4.8/4.9 Regression] Issue with using declaration and member class template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65061 --- Comment #5 from Paolo Carlini paolo.carlini at oracle dot com --- Jason, shall we just close this as fixed in 5.1, or we want to try backporting the simple fix to 4_9-branch?
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 --- Comment #9 from Dominik Vogt vogt at linux dot vnet.ibm.com --- Yeah, I accidentally left the other test cases commented out. I'll clean that up in the next version of the patch. That doesn't have an impact on the correctness of the code change, though.
[Bug c++/65598] Fix column location for 'explicit'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65598 Paolo Carlini paolo.carlini at oracle dot com changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |paolo.carlini at oracle dot com Target Milestone|5.2 |6.0 --- Comment #5 from Paolo Carlini paolo.carlini at oracle dot com --- Mine.
[Bug tree-optimization/62171] restrict pointer to struct with restrict pointers parm doesn't prevent aliases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62171 --- Comment #5 from vries at gcc dot gnu.org --- (In reply to Richard Biener from comment #1) It may already work if you use C++ and static double __attribute__((noinline, noclone)) f (struct omp_data_i __restrict__ p, int argc) { ? That is, if the middle-end uses a REFERENCE_TYPE? Confirmed, rewriting the example with 'struct omp_data_i ' and compiling with g++ solves the aliasing problem.
[Bug c++/65061] [4.8/4.9 Regression] Issue with using declaration and member class template
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65061 Paolo Carlini paolo.carlini at oracle dot com changed: What|Removed |Added CC||rs2740 at gmail dot com --- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com --- *** Bug 65415 has been marked as a duplicate of this bug. ***
[Bug tree-optimization/66142] Loop is not vectorized because not sufficient support for GOMP_SIMD_LANE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66142 --- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org --- Ah, but fre2 is able to optimize those: D.2881[_12].dir.x = x_13; ... _32 = MEM[(const struct Ray *)D.2881][_12].dir.x; cases to _32 = x_13; The problem in FRE2 is only with the MEM_REFs. If in the testcase - ray.org = p; + ray.org.x = p.x; + ray.org.y = p.y; then FRE2 handles it completely and the problem is the same between -fopenmp and -fno-openmp - ifcvt not ifconverting the loop.
[Bug tree-optimization/66142] Loop is not vectorized because not sufficient support for GOMP_SIMD_LANE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66142 --- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org --- Ah, and the reason for the ifcvt failure is that we have an unoptimized virtual PHI in the loop that ifcvt gives up on: # .MEM_55 = PHI .MEM_55(7), .MEM_5(D)(2) Only phicprop2 pass is able to optimize that away (and replace all uses of .MEM_55 with .MEM_5(D)).
[Bug tree-optimization/66142] Loop is not vectorized because not sufficient support for GOMP_SIMD_LANE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66142 --- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org --- Created attachment 35596 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35596action=edit gcc6-pr66142.patch Fix for the ifcvt issue. With this the modified testcase is vectorized.
[Bug middle-end/66251] [6 Regression] ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1484
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66251 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added CC||matz at gcc dot gnu.org --- Comment #2 from Richard Biener rguenth at gcc dot gnu.org --- I have a fix for the ICE: Index: gcc/tree-vect-stmts.c === --- gcc/tree-vect-stmts.c (revision 223529) +++ gcc/tree-vect-stmts.c (working copy) @@ -3964,14 +3964,12 @@ vectorizable_conversion (gimple stmt, gi if (slp_node) SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt); + + if (!prev_stmt_info) + STMT_VINFO_VEC_STMT (stmt_info) = new_stmt; else - { - if (!prev_stmt_info) - STMT_VINFO_VEC_STMT (stmt_info) = new_stmt; - else - STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt; - prev_stmt_info = vinfo_for_stmt (new_stmt); - } + STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt; + prev_stmt_info = vinfo_for_stmt (new_stmt); } } but I'm not sure we create correct code here. The strided-store path looks wrong to me. Micha? vect__19.9_70 = [vec_unpack_lo_expr] vect_cst_.8_69; vect__19.9_71 = [vec_unpack_hi_expr] vect_cst_.8_69; _21 = (real(kind=8)) _20; _82 = BIT_FIELD_REF vect__19.9_70, 64, 0; MEM[(real(kind=8) *)ivtmp_72] = _82; ivtmp_84 = ivtmp_72 + _81; _85 = BIT_FIELD_REF vect__19.9_70, 64, 64; MEM[(real(kind=8) *)ivtmp_84] = _85; we load a v4sf and unpack to two v2df vectors (unrolling factor of two is applied). But then the strided store code appears to just store from the first vector, the realpart to the first unrolled iteration destination realpart and the imagpart to the second unrolled interation realpart!? (gdb) p ncopies $1 = 1 (gdb) p vec_num $2 = 2 you somehow miss the loop over vec_num. Or you miss to reject the testcase for strided stores (possibly our patches just crossed here). That is, SLP support seems to be absent here. Joost - can you produce a runtime testcase that verifies correctness? Meanwhile testing the ICE fixing patch.
[Bug tree-optimization/62171] restrict pointer to struct with restrict pointers parm doesn't prevent aliases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62171 --- Comment #3 from vries at gcc dot gnu.org --- (In reply to Richard Biener from comment #2) And maybe set DECL_BY_REFERENCE, a mere REFERENCE_TYPE doesn't prevent you from doing (param)[2] which we'd miscompile. Not sure who added that REFERENCE_TYPE code. Submitted here: https://gcc.gnu.org/ml/gcc-patches/2011-09/msg01489.html OK-ed here: https://gcc.gnu.org/ml/gcc-patches/2011-09/msg01489.html
[Bug tree-optimization/62171] restrict pointer to struct with restrict pointers parm doesn't prevent aliases
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62171 --- Comment #4 from vries at gcc dot gnu.org --- (In reply to vries from comment #3) (In reply to Richard Biener from comment #2) And maybe set DECL_BY_REFERENCE, a mere REFERENCE_TYPE doesn't prevent you from doing (param)[2] which we'd miscompile. Not sure who added that REFERENCE_TYPE code. [correcting copy/past-o] Submitted here: https://gcc.gnu.org/ml/gcc-patches/2011-09/msg01426.html OK-ed here: https://gcc.gnu.org/ml/gcc-patches/2011-09/msg01489.html
[Bug fortran/66089] [6 Regression] elemental dependency mishandling when derived types are involved
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66089 --- Comment #9 from vehre at gcc dot gnu.org --- That was a rhetorical question. In the patch you submitted in comment #2 could you put a comment (in the source) at: Index: trans-array.c === --- trans-array.c (révision 222968) +++ trans-array.c (copie de travail) @@ -2451,7 +2451,8 @@ gfc_scalar_elemental_arg_saved_as_reference (gfc_s @@ -4465,6 +4466,10 @@ gfc_conv_resolve_dependencies (gfc_loopinfo * loop nDepend = gfc_check_dependency (dest_expr, ss_expr, false); here + if (ss-info-type == GFC_SS_REFERENCE + gfc_check_dependency (dest_expr, ss_expr, false) == 1) + ss-info-data.scalar.need_temporary = 1; + continue; } what the reason for this check and set of the flag is? Now it is clear to us, but in the future we might be wondering. Furthermore is the flag name need_temporary correct here? I think, that it should have the polymorphic nature of its existence in its name. Like non_polymorphic_temp or the like. I am still wondering whether there isn't a counterexample where this is not working, i.e., we have lhs-rhs-dependency that is polymorphic. But because assignment to (allocatable) polymorphic entities is not allowed, I could not come up with one.
[Bug middle-end/66241] [6 regression] [ARM] ICE: verify_type failed while building libstdc++ (dwarfout.c: gen_type_die_with_usage())
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66241 ktkachov at gcc dot gnu.org changed: What|Removed |Added Last reconfirmed|2015-05-21 00:00:00 |2015-5-22 CC||ktkachov at gcc dot gnu.org --- Comment #4 from ktkachov at gcc dot gnu.org --- I'm seeing this as well (as it is blocking the arm-none-linux-gnueabihf build)
[Bug tree-optimization/66142] Loop is not vectorized because not sufficient support for GOMP_SIMD_LANE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66142 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org --- On this testcase, I believe it is most important to change FRE and SRA. Without -fopenmp, we have before fre2: MEM[(struct ray_ *)ray] = 1.0e+0; MEM[(struct ray_ *)ray + 4B] = _8; ray.dir.x = x_10; ray.dir.y = y_11; ... _23 = ray.org.x; _26 = ray.org.y; _29 = ray.dir.x; _31 = ray.dir.y; and fre2 optimizes this into the values stored in there. With -fopenmp, we have the SIMD_LANE based array references: _12 = GOMP_SIMD_LANE (simduid.0_11(D)); _9 = D.2881[_12].org; MEM[(struct vec_ *)_9] = 1.0e+0; MEM[(struct vec_ *)_9 + 4B] = _8; D.2881[_12].dir.x = x_13; D.2881[_12].dir.y = y_14; ... _26 = MEM[(const struct Ray *)D.2881][_12].org.x; _29 = MEM[(const struct Ray *)D.2881][_12].org.y; _32 = MEM[(const struct Ray *)D.2881][_12].dir.x; _34 = MEM[(const struct Ray *)D.2881][_12].dir.y; that fre2 isn't able to optimize. Doing something here on the vectorizer side is too late, we really need to scalarize those or remove completely (through fre2).
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 --- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org --- As for the hotpatch testcases, have you tested them also with -fno-dwarf2-cfi-asm (as they seem to contain .cfi directives in the regexps)? And for the main patch, the change will revert the order of 2, 4 and 6 byte nops post-label, is that ok? Say if some hotpatching code were to verify it overwrites the nops and required the old order.
[Bug bootstrap/66252] New: [6 regression] bootstrap comparison failures on sparc-linux
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66252 Bug ID: 66252 Summary: [6 regression] bootstrap comparison failures on sparc-linux 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 Target Milestone: --- Attempting to bootstrap gcc trunk on sparc64-linux with options to default to 32-bit code, fails with: Comparing stages 2 and 3 warning: gcc/cc1-checksum.o differs warning: gcc/cc1plus-checksum.o differs Bootstrap comparison failure! gcc/ggc-page.o differs gcc/tree-ssa-alias.o differs gcc/gimple-streamer-in.o differs gcc/host-linux.o differs gcc/lto-streamer-in.o differs gcc/builtins.o differs gcc/expmed.o differs gcc/ipa-inline-analysis.o differs gcc/lto-cgraph.o differs gcc/dwarf2out.o differs gcc/ipa-cp.o differs gcc/fold-const.o differs gcc/df-core.o differs gcc/ipa-prop.o differs gcc/lra-spills.o differs gcc/tree-streamer-in.o differs gcc/ubsan.o differs gcc/ipa-inline.o differs gcc/calls.o differs gcc/ifcvt.o differs gcc/cgraph.o differs gcc/asan.o differs gcc/profile.o differs gcc/expr.o differs gcc/lra-eliminations.o differs gcc/ipa-devirt.o differs gcc/ipa-profile.o differs gcc/lto-streamer.o differs gcc/real.o differs gcc/lra-constraints.o differs gcc/reload.o differs gcc/gcov-dump.o differs gcc/gimple-fold.o differs gcc/ggc-common.o differs gcc/combine.o differs gcc/tree-ssa-threadupdate.o differs gcc/value-prof.o differs gcc/gcc.o differs gcc/statistics.o differs gcc/sched-rgn.o differs libbacktrace/dwarf.o differs libcpp/expr.o differs libdecnumber/decimal128.o differs make[2]: *** [compare] Error 1 make[2]: Leaving directory `/mnt/scratch/objdir' make[1]: *** [stage3-bubble] Error 2 make[1]: Leaving directory `/mnt/scratch/objdir' make: *** [bootstrap] Error 2 It appears to have going on for a while now, my last successful bootstrap of trunk was with the 20150419 snapshot. Starting a bisection now. Configured with: /mnt/scratch/gcc-trunk-r223498/configure --prefix=/mnt/scratch/install6 --with-gmp=/home/mikpe/pkgs/linux-sparc64/gmp-6.0.0 --with-mpfr=/home/mikpe/pkgs/linux-sparc64/mpfr-3.1.2 --with-mpc=/home/mikpe/pkgs/linux-sparc64/mpc-1.0.3 --enable-multilib --disable-plugin --disable-lto --disable-nls --enable-threads=posix --enable-checking=release --disable-libmudflap --enable-languages=c,c++ --build=sparc-unknown-linux --target=sparc-unknown-linux --with-cpu=ultrasparc --enable-targets=all --disable-libsanitizer
[Bug c/54006] __atomic_always_lock_free inconsistent with __GCC_ATOMIC_INT_LOCK_FREE et al.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54006 Nick nick.mayerho...@rise-world.com changed: What|Removed |Added CC||nick.mayerhofer@rise-world. ||com --- Comment #4 from Nick nick.mayerho...@rise-world.com --- FYI: There is also a debian bug [1], an entry in the debian mailing list [2], a related bug in the nghttp2 project [3] (with a cpp code-based workaround [4]) and a similar looking entry at stackoverflow [5]. [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727621 [2] https://lists.debian.org/debian-arm/2013/12/msg7.html [3] https://github.com/tatsuhiro-t/nghttp2/issues/86 [4] https://github.com/tatsuhiro-t/nghttp2/commit/ba92935f64627f77d3b9a1439766d83dc0c9f679 [5] http://stackoverflow.com/questions/22036396/stdpromise-error-on-cross-compiling
[Bug middle-end/66251] [6 Regression] ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1484
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66251 --- Comment #3 from Richard Biener rguenth at gcc dot gnu.org --- Author: rguenth Date: Fri May 22 12:34:46 2015 New Revision: 223552 URL: https://gcc.gnu.org/viewcvs?rev=223552root=gccview=rev Log: 2015-05-22 Richard Biener rguent...@suse.de PR tree-optimization/66251 * tree-vect-stmts.c (vectorizable_conversion): Properly set STMT_VINFO_VEC_STMT even for the SLP case. * gfortran.fortran-torture/compile/pr66251.f90: New testcase. Added: trunk/gcc/testsuite/gfortran.fortran-torture/compile/pr66251.f90 Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vect-stmts.c
[Bug bootstrap/66252] [6 regression] bootstrap comparison failures on sparc-linux
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66252 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added Target Milestone|--- |6.0
[Bug target/52049] SH Target: Inefficient constant address access
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52049 --- Comment #2 from Oleg Endo olegendo at gcc dot gnu.org --- There is a GSoC 2015 project which will try to address the AMS problem. https://www.google-melange.com/gsoc/project/details/google/gsoc2015/erikvarga/5693417237512192 It will be initially for SH. If it works out, it can be generalized so that other targets can benefit from it, too.
[Bug other/66250] Can't adjust complex nor decimal floating point modes
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66250 H.J. Lu hjl.tools at gmail dot com changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2015-05-22 Target Milestone|--- |6.0 Ever confirmed|0 |1 --- Comment #1 from H.J. Lu hjl.tools at gmail dot com --- A patch is posted at https://gcc.gnu.org/ml/gcc-patches/2015-05/msg02094.html
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 --- Comment #12 from Dominik Vogt vogt at linux dot vnet.ibm.com --- Created attachment 35597 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35597action=edit Experimental fix 2 Version 2 of the patch with the suggested changes and test fixes. Note: Functions without active insns will get the pre-label NOPs, the comment # post-label NOPs but no NOPs after that. Not sure whether it's worth the effort to clean this up. Please test if this fixes the observed problem (it does for me).
[Bug middle-end/66253] [6 Regression] 459.GemsFDTD in SPEC CPU 2006 is miscompiled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66253 H.J. Lu hjl.tools at gmail dot com changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2015-05-22 Version|5.1.1 |6.0 Target Milestone|--- |6.0 Ever confirmed|0 |1
[Bug target/66224] PowerPC _GLIBCXX_READ_MEM_BARRIER too weak
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66224 --- Comment #3 from David Edelsohn dje at gcc dot gnu.org --- Author: dje Date: Fri May 22 12:43:02 2015 New Revision: 223554 URL: https://gcc.gnu.org/viewcvs?rev=223554root=gccview=rev Log: PR target/66224 * config/cpu/powerpc/atomic_word.h (_GLIBCXX_READ_MEM_BARRIER): Don't use isync. Use lwsync if available. * configure.host (atomic_word_dir) [aix[56789]*]: Delete to use powerpc cpu definition. Modified: branches/gcc-5-branch/libstdc++-v3/ChangeLog branches/gcc-5-branch/libstdc++-v3/config/cpu/powerpc/atomic_word.h branches/gcc-5-branch/libstdc++-v3/configure.host
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 --- Comment #14 from Dominik Vogt vogt at linux dot vnet.ibm.com --- Is it possible that a function has no insns at all?
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 Dominik Vogt vogt at linux dot vnet.ibm.com changed: What|Removed |Added Attachment #35597|0 |1 is obsolete|| --- Comment #15 from Dominik Vogt vogt at linux dot vnet.ibm.com --- Created attachment 35598 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35598action=edit Experimental fix 3 Version 3 of the patch with the suggested change; also fixes th egcc_unreachable test.
[Bug target/65832] Inefficient vector construction
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65832 --- Comment #5 from Richard Biener rguenth at gcc dot gnu.org --- On a related note, store_constructor handles VECTOR_TYPE constructors through the vec_init optab but that doesn't work for vector elements: /* Don't use vec_initmode if some elements have VECTOR_TYPE. */ if (icode != CODE_FOR_nothing) { tree value; FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (exp), idx, value) if (TREE_CODE (TREE_TYPE (value)) == VECTOR_TYPE) { icode = CODE_FOR_nothing; instead it could, for say a V16QI constructor of four V4QI elements pun the elements to SI mode, create a V4SI mode vector via vec_init and then pun it to V16QI. All punning via subregs. The vectorizer currently creates such vector constructors from grouped strided load/store support.
[Bug middle-end/66253] New: [6 Regression] 459.GemsFDTD in SPEC CPU 2006 is miscompiled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66253 Bug ID: 66253 Summary: [6 Regression] 459.GemsFDTD in SPEC CPU 2006 is miscompiled Product: gcc Version: 5.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com Target Milestone: --- On Linux/x86-64, 459.GemsFDTD in SPEC CPU 2006 is miscompiled: gfortran -O3 -funroll-loops -ffast-math -DSPEC_CPU_LP64errorcheck.o parameter.o globalvar.o excite.o fourier_transf.o huygens.fppized.o posvector.o NFT.fppized.o readline.o PEC.o UPML.fppized.o calcflops.o progress.o update.fppized.o leapfrog.o readdata.o GemsFDTD.o timerRoutine.o -o GemsFDTD Running Benchmarks Running 459.GemsFDTD ref peak lnx32e-gcc default *** Miscompare of sphere_td.nft; for details see r223425 is OK and r223491 is bad.
[Bug middle-end/66251] [6 Regression] ICE in vect_get_vec_def_for_operand, at tree-vect-stmts.c:1484
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66251 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added CC||rguenth at gcc dot gnu.org Assignee|rguenth at gcc dot gnu.org |matz at gcc dot gnu.org --- Comment #4 from Richard Biener rguenth at gcc dot gnu.org --- ICE fixed, handing over to Micha.
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 --- Comment #13 from Jakub Jelinek jakub at gcc dot gnu.org --- The only function without active insns I'm aware of is: void foo (void) { __builtin_unreachable (); } which only contains notes and a BARRIER, nothing else (at least on s390x). It would be desirable to handle even that, otherwise a hotpatcher would overwrite random bytes from some other function. One option would be to avoid using next_active_insn: for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) if (active_insn_p (insn) || BARRIER_P (insn)) break; Adding the nops after a BARRIER is generally undesirable I'd say.
[Bug target/53911] [SH] Improve displacement addressing
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53911 --- Comment #4 from Oleg Endo olegendo at gcc dot gnu.org --- There is a GSoC 2015 project which will try to address the AMS problem. https://www.google-melange.com/gsoc/project/details/google/gsoc2015/erikvarga/5693417237512192 It will be initially for SH. If it works out, it can be generalized so that other targets can benefit from it, too.
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 Dominik Vogt vogt at linux dot vnet.ibm.com changed: What|Removed |Added Attachment #35598|0 |1 is obsolete|| --- Comment #17 from Dominik Vogt vogt at linux dot vnet.ibm.com --- Created attachment 35599 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35599action=edit Experimental fix 4 Version 4 of the patch with the suggested change and a test case for it.
[Bug tree-optimization/60890] Performance regression in 4.8 for memory postinc
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60890 --- Comment #3 from Oleg Endo olegendo at gcc dot gnu.org --- There is a GSoC 2015 project which will try to address the AMS problem. https://www.google-melange.com/gsoc/project/details/google/gsoc2015/erikvarga/5693417237512192 It will be initially for SH. If it works out, it can be generalized so that other targets can benefit from it, too.
[Bug target/66224] PowerPC _GLIBCXX_READ_MEM_BARRIER too weak
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66224 --- Comment #4 from David Edelsohn dje at gcc dot gnu.org --- Author: dje Date: Fri May 22 13:02:34 2015 New Revision: 223564 URL: https://gcc.gnu.org/viewcvs?rev=223564root=gccview=rev Log: PR target/66224 * config/cpu/powerpc/atomic_word.h (_GLIBCXX_READ_MEM_BARRIER): Don't use isync. Use lwsync if available. Modified: branches/gcc-4_9-branch/libstdc++-v3/ChangeLog branches/gcc-4_9-branch/libstdc++-v3/config/cpu/powerpc/atomic_word.h
[Bug middle-end/66253] [6 Regression] 459.GemsFDTD in SPEC CPU 2006 is miscompiled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66253 Richard Biener rguenth at gcc dot gnu.org changed: What|Removed |Added CC||matz at gcc dot gnu.org --- Comment #1 from Richard Biener rguenth at gcc dot gnu.org --- Probably related to PR66251 aka strided store support.
[Bug target/66215] [4.8/4.9/5/6 Regression] Wrong after label NOP emission for -mhotpatch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66215 --- Comment #16 from Jakub Jelinek jakub at gcc dot gnu.org --- The function I've mentioned has: (note 1 0 3 NOTE_INSN_DELETED) (note 3 1 12 [bb 2] NOTE_INSN_BASIC_BLOCK) (note 12 3 2 NOTE_INSN_PROLOGUE_END) (note 2 12 5 NOTE_INSN_FUNCTION_BEG) (barrier 5 2 8) (note 8 5 0 NOTE_INSN_DELETED) (at least in my somewhat older trunk version). I can't think of anything simpler than that, because if the function isn't noreturn, it shall have at least a return insn at the end, and if it is noreturn, but doesn't have __builtin_unreachable () in it, there should be either an endless loop (so some jump_insn), or noreturn call (call_insn). Though, thinking about it, if you only have notes at the beginning and then some CODE_LABEL, adding the nops after the CODE_LABEL would result in running the nops not just when entering the function the first time, but more often. Thus, I'd suggest maybe: for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) if (active_insn_p (insn) || BARRIER_P (insn) || LABEL_P (insn)) break; Thus, put the nops before first of active insns, barrier (that one for the __builtin_unreachable () case) and the last one for e.g.: void baz (volatile unsigned int *i) { for (;;) (*i)++; } where I guess hotpatching wouldn't really like to see this as running the function many times.
[Bug rtl-optimization/56590] Replace auto-inc-dec pass with generic address mode selection pass
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56590 --- Comment #3 from Oleg Endo olegendo at gcc dot gnu.org --- There is a GSoC 2015 project which will try to address the AMS problem. https://www.google-melange.com/gsoc/project/details/google/gsoc2015/erikvarga/5693417237512192 It will be initially for SH. If it works out, it can be generalized so that other targets can benefit from it, too.
[Bug rtl-optimization/50749] Auto-inc-dec does not find subsequent contiguous mem accesses
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50749 --- Comment #19 from Oleg Endo olegendo at gcc dot gnu.org --- There is a GSoC 2015 project which will try to address the AMS problem. https://www.google-melange.com/gsoc/project/details/google/gsoc2015/erikvarga/5693417237512192 It will be initially for SH. If it works out, it can be generalized so that other targets can benefit from it, too.
[Bug rtl-optimization/42612] post-increment addressing not used
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42612 --- Comment #5 from Oleg Endo olegendo at gcc dot gnu.org --- There is a GSoC 2015 project which will try to address the AMS problem. https://www.google-melange.com/gsoc/project/details/google/gsoc2015/erikvarga/5693417237512192 It will be initially for SH. If it works out, it can be generalized so that other targets can benefit from it, too.
[Bug target/65491] [aarch64] ICE: in emit_move_insn, at expr.c:3609
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65491 ktkachov at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Known to work||6.0 Resolution|--- |FIXED --- Comment #4 from ktkachov at gcc dot gnu.org --- Fixed on trunk. Since this has been failing on all release branches, this is not a regression fix, so no backporting
[Bug c++/65598] Fix column location for 'explicit'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65598 --- Comment #6 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org --- Author: paolo Date: Fri May 22 14:14:38 2015 New Revision: 223576 URL: https://gcc.gnu.org/viewcvs?rev=223576root=gccview=rev Log: /cp 2015-05-22 Paolo Carlini paolo.carl...@oracle.com PR c++/65598 * decl.c (grokdeclarator): Use the correct location in error messages about 'explicit'. /testsuite 2015-05-22 Paolo Carlini paolo.carl...@oracle.com PR c++/65598 * g++.dg/cpp0x/explicit9.C: New. * g++.dg/cpp0x/explicit8.C: Check the locations too. Added: trunk/gcc/testsuite/g++.dg/cpp0x/explicit9.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/decl.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/cpp0x/explicit8.C
[Bug middle-end/66253] [6 Regression] 459.GemsFDTD in SPEC CPU 2006 is miscompiled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66253 --- Comment #2 from H.J. Lu hjl.tools at gmail dot com --- (In reply to Richard Biener from comment #1) Probably related to PR66251 aka strided store support. It is caused by r223486.
[Bug c++/61198] Crash when selecting specializations through aliases.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61198 Paolo Carlini paolo.carlini at oracle dot com changed: What|Removed |Added CC||galbramc at mit dot edu --- Comment #9 from Paolo Carlini paolo.carlini at oracle dot com --- *** Bug 65764 has been marked as a duplicate of this bug. ***
[Bug middle-end/66253] [6 Regression] 459.GemsFDTD in SPEC CPU 2006 is miscompiled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66253 --- Comment #3 from Michael Matz matz at gcc dot gnu.org --- Can you check if the patch at https://gcc.gnu.org/ml/gcc-patches/2015-05/msg02133.html helps also gemsfdtd?
[Bug c++/65764] internal compiler error: in retrieve_specialization, at cp/pt.c:1048
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65764 Paolo Carlini paolo.carlini at oracle dot com changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |DUPLICATE --- Comment #3 from Paolo Carlini paolo.carlini at oracle dot com --- Dup. *** This bug has been marked as a duplicate of bug 61198 ***
[Bug target/66195] Optimize _GLIBCXX_GUARD_TEST_AND_ACQUIRE and _GLIBCXX_GUARD_SET_AND_RELEASE for PowerPC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66195 David Edelsohn dje at gcc dot gnu.org changed: What|Removed |Added URL||https://gcc.gnu.org/ml/gcc- ||patches/2015-05/msg02092.ht ||ml --- Comment #2 from David Edelsohn dje at gcc dot gnu.org --- Ramana's patch to cpu/generic/atomic_word.h addresses this. https://gcc.gnu.org/ml/gcc-patches/2015-05/msg02092.html
[Bug tree-optimization/66142] Loop is not vectorized because not sufficient support for GOMP_SIMD_LANE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66142 --- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org --- As for the FRE (actually SCCVN) issue, seems this affects more than GOMP_SIMD_LANE, seems there is insufficient canonicalization of the references performed by SCCVN, so the same references, but in slightly different form, aren't considered the same. Please see e.g. struct A { float x, y; }; struct B { struct A u, v; }; void bar (struct A *); float f1 (struct B *x, int y) { struct A p; p.x = 1.0f; p.y = 2.0f; struct A *q = x[y].u; *q = p; x[y].v.x = 3.0f; x[y].v.y = 4.0f; float f = x[y].u.x + x[y].u.y + x[y].v.x + x[y].v.y; bar (p); return f; } float f2 (struct B *x, int y) { struct A p; p.x = 1.0f; p.y = 2.0f; x[y].u = p; x[y].v.x = 3.0f; x[y].v.y = 4.0f; float f = x[y].u.x + x[y].u.y + x[y].v.x + x[y].v.y; bar (p); return f; } float f3 (struct B *x, int y) { struct A p; p.x = 1.0f; p.y = 2.0f; struct A *q = x[y].u; __builtin_memcpy (q, p.x, sizeof (float)); __builtin_memcpy (q-y, p.y, sizeof (float)); *q = p; x[y].v.x = 3.0f; x[y].v.y = 4.0f; float f = x[y].u.x + x[y].u.y + x[y].v.x + x[y].v.y; bar (p); return f; } float f4 (struct B *x, int y) { struct A p; p.x = 1.0f; p.y = 2.0f; __builtin_memcpy (x[y].u.x, p.x, sizeof (float)); __builtin_memcpy (x[y].u.y, p.y, sizeof (float)); x[y].v.x = 3.0f; x[y].v.y = 4.0f; float f = x[y].u.x + x[y].u.y + x[y].v.x + x[y].v.y; bar (p); return f; } at -O2, FRE is able to optimize f2 and f4, but not f1 and f3, despite all 4 functions doing the same thing.
[Bug c++/65598] Fix column location for 'explicit'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65598 Paolo Carlini paolo.carlini at oracle dot com changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED Assignee|paolo.carlini at oracle dot com|unassigned at gcc dot gnu.org --- Comment #7 from Paolo Carlini paolo.carlini at oracle dot com --- Fixed.
[Bug target/65491] [aarch64] ICE: in emit_move_insn, at expr.c:3609
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65491 --- Comment #3 from ktkachov at gcc dot gnu.org --- Author: ktkachov Date: Fri May 22 14:36:27 2015 New Revision: 223577 URL: https://gcc.gnu.org/viewcvs?rev=223577root=gccview=rev Log: [AArch64] PR target/65491: Classify V1TF vectors as AAPCS64 short vectors rather than composite types PR target/65491 * config/aarch64/aarch64.c (aarch64_short_vector_p): Move above aarch64_composite_type_p. Remove check for aarch64_composite_type_p. (aarch64_composite_type_p): Return false if given type and mode are for a short vector. PR target/65491 * gcc.target/aarch64/pr65491_1.c: New test. * gcc.target/aarch64/aapcs64/type-def.h (vlf1_t): New typedef. * gcc.target/aarch64/aapcs64/func-ret-1.c: Add test for vlf1_t. Added: trunk/gcc/testsuite/gcc.target/aarch64/pr65491_1.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/aarch64/aarch64.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-1.c trunk/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
[Bug c++/65750] [4.9/5 Regression] misinterpret in a virtual member function with a C++11 style function signature
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65750 Paolo Carlini paolo.carlini at oracle dot com changed: What|Removed |Added CC||paolo.carlini at oracle dot com --- Comment #6 from Paolo Carlini paolo.carlini at oracle dot com --- Out of curiosity, what happened to the work linked in Comment #5? I see an Ok and then nothing more?
[Bug middle-end/66253] [6 Regression] 459.GemsFDTD in SPEC CPU 2006 is miscompiled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66253 --- Comment #4 from H.J. Lu hjl.tools at gmail dot com --- (In reply to Michael Matz from comment #3) Can you check if the patch at https://gcc.gnu.org/ml/gcc-patches/2015-05/msg02133.html helps also gemsfdtd? I tried and I still got Running Benchmarks Running 459.GemsFDTD ref peak lnx32e-gcc default *** Miscompare of sphere_td.nft; for details see
[Bug middle-end/66253] [6 Regression] 459.GemsFDTD in SPEC CPU 2006 is miscompiled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66253 Michael Matz matz at gcc dot gnu.org changed: What|Removed |Added Assignee|unassigned at gcc dot gnu.org |matz at gcc dot gnu.org --- Comment #6 from Michael Matz matz at gcc dot gnu.org --- hence, mine
[Bug tree-optimization/48052] loop not vectorized if index is unsigned int
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48052 --- Comment #13 from AK hiraditya at msn dot com --- We have an updated patch that works for both the cases. https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01991.html
[Bug c++/65815] brace elision doesn't work in NSDMI
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65815 Paolo Carlini paolo.carlini at oracle dot com changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |paolo.carlini at oracle dot com --- Comment #8 from Paolo Carlini paolo.carlini at oracle dot com --- Mine.
[Bug libstdc++/66017] Undefined behaviour in std::setlong long
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66017 Jonathan Wakely redi at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2015-05-22 Assignee|unassigned at gcc dot gnu.org |redi at gcc dot gnu.org Ever confirmed|0 |1
[Bug middle-end/66253] [6 Regression] 459.GemsFDTD in SPEC CPU 2006 is miscompiled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66253 --- Comment #5 from Michael Matz matz at gcc dot gnu.org --- (In reply to H.J. Lu from comment #4) I tried and I still got Running Benchmarks Running 459.GemsFDTD ref peak lnx32e-gcc default *** Miscompare of sphere_td.nft; for details see Hmpf, okay need to analyze it myself then :-/
[Bug c/66240] RFE: extend -falign-xyz syntax
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66240 Josh Triplett josh at joshtriplett dot org changed: What|Removed |Added CC||josh at joshtriplett dot org --- Comment #1 from Josh Triplett josh at joshtriplett dot org --- Another alternative discussed in that thread, which seems near-ideal: align functions to a given size (for instance, 64 bytes), pack them into that size if they fit, but avoid splitting a function across that boundary unless it's larger than that boundary. (That would require the compiler or assembler to know the size of each function.)
[Bug libstdc++/53477] pretty printer fails with: Python Exception type 'exceptions.IndexError' list index out of range
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53477 Jonathan Wakely redi at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |WAITING Last reconfirmed||2015-05-22 Ever confirmed|0 |1 --- Comment #21 from Jonathan Wakely redi at gcc dot gnu.org --- If this is still a problem please provide a complete testcase that reproduces it (one that actually links!)
[Bug fortran/61831] [4.9/ 5 Regression] runtime error: pointer being freed was not allocated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61831 Mikael Morin mikael at gcc dot gnu.org changed: What|Removed |Added Keywords||patch Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |mikael at gcc dot gnu.org --- Comment #47 from Mikael Morin mikael at gcc dot gnu.org --- Patch posted: https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01491.html
[Bug c++/66255] New: ice in retrieve_specialization
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66255 Bug ID: 66255 Summary: ice in retrieve_specialization Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- Created attachment 35601 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35601action=edit gzipped C++ source code The attached code, when compiled by gcc trunk dated 20150520 and with flags -O2 -march=native -std=c++0x on a x86_64 box, says this: /usr/include/qt5/QtCore/qglobalstatic.h:123:1: internal compiler error: in retrieve_specialization, at cp/pt.c:1065 { ^ 0x6344fa retrieve_specialization ../../src/trunk/gcc/cp/pt.c:1065 0x65a169 tsubst_decl ../../src/trunk/gcc/cp/pt.c:11290 0x645c8e tsubst(tree_node*, tree_node*, int, tree_node*) ../../src/trunk/gcc/cp/pt.c:11812 0x678268 instantiate_class_template_1 ../../src/trunk/gcc/cp/pt.c:9400
[Bug middle-end/66148] [6 regression] build/genpreds: Internal error: abort in choose_enum_order, at genpreds.c:1006
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66148 John David Anglin danglin at gcc dot gnu.org changed: What|Removed |Added CC||thopre01 at gcc dot gnu.org --- Comment #3 from John David Anglin danglin at gcc dot gnu.org --- This patch introduces this difference in assembly code of genpreds.c: - ldil L'-822083584,%r20 - depdi 0,0+32-1,32,%r20 - and %r22,%r20,%r20 - cmpb,* %r0,%r20,L$0361 - shladd,l %r31,3,%r28,%r20 + ldil L'-822083584,%r21 + and %r22,%r21,%r21 + cmpb,* %r0,%r21,L$0361 + shladd,l %r31,3,%r28,%r21 The depdi instruction clearing the most significant of register %r20 is no longer generated. The 32-bit immediate value loaded by the ldil instruction is sign extended to 64 bits.