[Bug tree-optimization/104551] New: Wrong code with -O3 for skylake-avx512, icelake-server, and sapphirerapids
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104551 Bug ID: 104551 Summary: Wrong code with -O3 for skylake-avx512, icelake-server, and sapphirerapids Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer (I was not able to merge it into a single file): // func.cpp extern unsigned var_11, var_178; extern unsigned char arr_492[]; void test() { for (bool a = 0; a < (bool)var_11; a = 2) for (unsigned b = 0; b < var_11; b += 1) var_178 = arr_492[b] ? arr_492[b] : (char) b; } // driver.cpp unsigned int var_11 = 16U; unsigned int var_178 = 0; unsigned char arr_492 [16]; void test(); int main() { for (int i = 0; i < 16; ++i) arr_492 [i] = (unsigned char)128; test(); __builtin_printf("%u\n", var_178); if (var_178 != 128) __builtin_abort(); return 0; } Error: >$ g++ -O0 func.cpp driver.cpp -march=skylake-avx512 && sde -skx -- ./a.out 128 >$ g++ -O3 func.cpp driver.cpp -march=skylake-avx512 && sde -skx -- ./a.out 4294967168 Aborted (core dumped) g++ (git://gcc.gnu.org/git/gcc.git:master 58aeb75d4097010ad9bb72b964265b18ab284f93) 12.0.1 20220213 (experimental)
[Bug tree-optimization/103800] New: ICE in vectorizable_phi, at tree-vect-loop.c:7861 with -O3 -march=skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103800 Bug ID: 103800 Summary: ICE in vectorizable_phi, at tree-vect-loop.c:7861 with -O3 -march=skylake-avx512 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Link to the Compiler Explorer: https://godbolt.org/z/bWdof9c8s Reproducer: int a; long b; extern int c[], d[]; extern bool e[]; void f() { if (a) ; for (;;) { for (int g = 2; g; g = a) d[g] = 0; for (int h = 1; h < 13; h++) e[h] = b ? (short)c[4 + h - 1] : c[4 + h - 1]; } } Error: >$ g++ -O3 -march=skylake-avx512 -c func.cpp during GIMPLE pass: slp func.cpp: In function 'void f()': func.cpp:5:6: internal compiler error: in vectorizable_phi, at tree-vect-loop.c:7861 5 | void f() { | ^ 0x8bca05 vectorizable_phi(vec_info*, _stmt_vec_info*, gimple**, _slp_tree*, vec*) /testing/gcc/gcc_src_master/gcc/tree-vect-loop.c:7861 0x20abd84 vect_analyze_stmt(vec_info*, _stmt_vec_info*, bool*, _slp_tree*, _slp_instance*, vec*) /testing/gcc/gcc_src_master/gcc/tree-vect-stmts.c:11125 0x14a2186 vect_slp_analyze_node_operations_1 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:4481 0x14a2186 vect_slp_analyze_node_operations /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:4640 0x14a2097 vect_slp_analyze_node_operations /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:4620 0x14a2097 vect_slp_analyze_node_operations /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:4620 0x14a2097 vect_slp_analyze_node_operations /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:4620 0x14a4811 vect_slp_analyze_operations(vec_info*) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:4879 0x14a9605 vect_slp_analyze_bb_1 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:5817 0x14a9605 vect_slp_region /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:5864 0x14aae33 vect_slp_bbs /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:6056 0x14ab22c vect_slp_function(function*) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:6144 0x14b1c82 execute /testing/gcc/gcc_src_master/gcc/tree-vectorizer.c:1503 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. GCC version: gcc version 12.0.0 20211219 (fcbf94a5be9e0c1ecad92da773a6632b86b7f70a) (GCC)
[Bug tree-optimization/103517] New: ICE in as_a, at is-a.h:242 with -O2 -march=skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103517 Bug ID: 103517 Summary: ICE in as_a, at is-a.h:242 with -O2 -march=skylake-avx512 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- The same error exists for Sapphire Rapids Reproducer: int a; short b, c; extern short d[]; void e() { for (short f = 1; f < (short)a; f += 2) if (d[f + 1]) { b = d[f]; c = d[f + 1]; } } Error: >$ g++ -O2 -march=skylake-avx512 -c func.cpp during GIMPLE pass: vect func.cpp: In function 'void e()': func.cpp:4:6: internal compiler error: in as_a, at is-a.h:242 4 | void e() { | ^ 0x8bc06a gphi const* as_a(gimple const*) /testing/gcc/gcc_src_master/gcc/is-a.h:242 0x8bc684 gcall* as_a(gimple*) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:991 0x8bc684 vect_build_slp_tree_1 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:1155 0x14880cc vect_build_slp_tree_2 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:1711 0x1487a0c vect_build_slp_tree /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:1544 0x144 vect_build_slp_tree_2 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:2206 0x1487a0c vect_build_slp_tree /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:1544 0x148c230 vect_build_slp_instance /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3019 0x148d6b5 vect_analyze_slp_instance /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3339 0x14920d4 vect_analyze_slp(vec_info*, unsigned int) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3422 0x146d24a vect_analyze_loop_2 /testing/gcc/gcc_src_master/gcc/tree-vect-loop.c:2331 0x146eef9 vect_analyze_loop_1 /testing/gcc/gcc_src_master/gcc/tree-vect-loop.c:2830 0x146f40a vect_analyze_loop(loop*, vec_info_shared*) /testing/gcc/gcc_src_master/gcc/tree-vect-loop.c:2952 0x14a3359 try_vectorize_loop_1 /testing/gcc/gcc_src_master/gcc/tree-vectorizer.c:1047 0x14a3359 try_vectorize_loop /testing/gcc/gcc_src_master/gcc/tree-vectorizer.c:1162 0x14a3fb4 execute /testing/gcc/gcc_src_master/gcc/tree-vectorizer.c:1278 gcc version 12.0.0 20211130 (6b8ecbc6d6652d061d7c72c64352d51eca2df6ca) (GCC)
[Bug tree-optimization/103489] New: ICE with -O3 in operator[], at vec.h:889
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103489 Bug ID: 103489 Summary: ICE with -O3 in operator[], at vec.h:889 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- The same reproducer also triggers ICE for Sapphire Rapids with a different stack trace. Link to the Compiler Explorer: https://godbolt.org/z/nxqPhnnoe Reproducer: bool a[80]; short b, f; void g(short h[][8][16]) { for (bool c = 0; c < b;) for (bool d = 0; d < (bool)f; d = 1) for (short e = 0; e < 16; e++) a[e] = h[b][1][e]; } Error: >$ g++ -O3 -c func.cpp during GIMPLE pass: slp func.cpp: In function 'void g(short int (*)[8][16])': func.cpp:3:6: internal compiler error: in operator[], at vec.h:889 3 | void g(short h[][8][16]) { | ^ 0x8b7e0a vec::operator[](unsigned int) /testing/gcc/gcc_src_master/gcc/vec.h:889 0x8b896f vec::operator[](unsigned int) /testing/gcc/gcc_src_master/gcc/tree-vect-loop.c:7877 0x8b896f vec::operator[](unsigned int) /testing/gcc/gcc_src_master/gcc/vec.h:1495 0x8b896f vectorizable_phi(vec_info*, _stmt_vec_info*, gimple**, _slp_tree*, vec*) /testing/gcc/gcc_src_master/gcc/tree-vect-loop.c:7869 0x2093485 vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) /testing/gcc/gcc_src_master/gcc/tree-vect-stmts.c:11174 0x1485797 vect_schedule_slp_node /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7252 0x1496756 vect_schedule_scc /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7450 0x14964e9 vect_schedule_scc /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7431 0x14964e9 vect_schedule_scc /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7431 0x1496daf vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr> const&) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7567 0x1498573 vect_slp_region /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:5926 0x1499503 vect_slp_bbs /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:6038 0x14998fc vect_slp_function(function*) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:6126 0x14a02f2 execute /testing/gcc/gcc_src_master/gcc/tree-vectorizer.c:1503 Sapphire Rapids Error: >$ g++ -O3 -c func.cpp -march=sapphirerapids func.cpp: In function 'void g(short int (*)[8][16])': func.cpp:3:6: error: incompatible types in 'PHI' argument 1 3 | void g(short h[][8][16]) { | ^ vector(16) unsigned char vector(16) vect_a_I_lsm.30_92 = PHI <_97(2), mask__28.29_93(4)> during GIMPLE pass: slp func.cpp:3:6: internal compiler error: verify_gimple failed 0x123e31a verify_gimple_in_cfg(function*, bool) /testing/gcc/gcc_src_master/gcc/tree-cfg.c:5578 0x110638f execute_function_todo /testing/gcc/gcc_src_master/gcc/passes.c:2084 0x110693b execute_todo /testing/gcc/gcc_src_master/gcc/passes.c:2138 gcc version 12.0.0 20211129 (ca5667e867252db3c8642ee90f55427149cd92b6) (GCC)
[Bug tree-optimization/103399] New: [12 Regression] Wrong code with -O2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103399 Bug ID: 103399 Summary: [12 Regression] Wrong code with -O2 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Link to the Compiler Explorer: https://godbolt.org/z/3GE6fKvYr Reproducer: #include char a = 0; long long b[8][10][18]; void e(int, long long[][10][18]) __attribute__((noipa)); void e(int f, long long g[][10][18]) { for (int d = 0; d < f; d += 3LL) for (int c = 0; c < ((f ? g[5][0][0] : 0) ^ g[5][0][0]) + 1; c++) a = 42; } int main() { for (size_t i = 0; i < 8; ++i) for (size_t k = 0; k < 10; ++k) for (size_t j = 0; j < 8; ++j) b[i][k][j] = -1311387439415292401LL; e(8, b); printf("%u\n", a); if (a != 42) __builtin_abort(); } Error: >$ g++ -O1 driver.cpp && ./a.out 42 >$ g++ -O2 driver.cpp && ./a.out 0 gcc version 12.0.0 20211123 (721d8b9e26bf8205c1f2125c2626919a408cdbe4) (GCC)
[Bug tree-optimization/103361] New: ICE in adjust_unroll_factor, at gimple-loop-jam.c:407
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103361 Bug ID: 103361 Summary: ICE in adjust_unroll_factor, at gimple-loop-jam.c:407 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Link to the Compiler Explorer: https://godbolt.org/z/jbKEn7Tdq Reproducer: char a, b; extern unsigned short c[]; extern bool d[]; const unsigned short &e(const unsigned short &f, const unsigned short &g) { if (g < f) return g; return f; } void k() { for (int h = 0; b; h += 3) for (unsigned long i = 0; i < 11104842004558084287ULL; i += -11104842004558084300ULL) for (bool j(e(6, e(6, c[h + i]))); j < (bool)a; j = 7) d[7] = 0; } Error: >$ g++ -O3 -c func.cpp during GIMPLE pass: unrolljam func.cpp: In function 'void k()': func.cpp:9:6: internal compiler error: in adjust_unroll_factor, at gimple-loop-jam.c:407 9 | void k() { | ^ 0x93ebce adjust_unroll_factor /testing/gcc/gcc_src_master/gcc/gimple-loop-jam.c:407 0x93ebce tree_loop_unroll_and_jam /testing/gcc/gcc_src_master/gcc/gimple-loop-jam.c:551 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. gcc version 12.0.0 20211121 (8fef6f720a5a0a056abfa986ba870bb406ab4716) (GCC)
[Bug tree-optimization/103321] [12 regression] ICE at tree-ssa.c:1211 after r12-5300
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103321 Vsevolod Livinskiy changed: What|Removed |Added CC||vsevolod.livinskij at frtk dot ru --- Comment #4 from Vsevolod Livinskiy --- The same error can be triggered for X86. Here is the link to the Compiler Explorer: https://godbolt.org/z/8zMhfhs5o This reproducer was found with YARPGen. Reproducer: long a; short b; extern unsigned long d[]; const unsigned long long &e(const unsigned long long &f, const unsigned long long &g) { if (f < g) return g; return f; } const unsigned long long &h(const unsigned long long &f, const unsigned long long &g) { return f < g ? f : g; } void j() { for (int i = 0;; i = 8) d[i] = h(e(a, c[i] && b), 7); } Error: >$ g++ -O2 -c func.cpp func.cpp: In function 'void j()': func.cpp:15:6: error: definition in block 5 does not dominate use in block 3 15 | void j() { | ^ for SSA_NAME: _23 in statement: _6 = PHI <_4(5), _23(3), _23(4)> PHI argument _23 for PHI node _6 = PHI <_4(5), _23(3), _23(4)> during GIMPLE pass: phiopt func.cpp:15:6: internal compiler error: verify_ssa failed 0x141284f verify_ssa(bool, bool) /testing/gcc/gcc_src_master/gcc/tree-ssa.c:1211 0x10e86d5 execute_function_todo /testing/gcc/gcc_src_master/gcc/passes.c:2049 0x10e901b execute_todo /testing/gcc/gcc_src_master/gcc/passes.c:2096 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. gcc version 12.0.0 2028 (d6ec661e3931773e2f571ed4f6dd8b0402d8687d) (GCC)
[Bug tree-optimization/103122] New: [12 Regression] ICE in fill_block_cache, at gimple-range-cache.cc:1277 with -O2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103122 Bug ID: 103122 Summary: [12 Regression] ICE in fill_block_cache, at gimple-range-cache.cc:1277 with -O2 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Link to the Compiler Explorer: https://godbolt.org/z/GWbbq3sKK Reproducer: unsigned a; int b; short c; void d(long) { for (bool e = (bool)c - 1; e < (bool)b - 1; e += 0) ; if (a) { for (char f = 0; f < 7; f = 7) for (int g = 0; g < c; g += 10) ; d(-!c); } } Error: >$ g++ -O2 -c func.cpp during GIMPLE pass: evrp func.cpp: In function 'void d(long int)': func.cpp:13:1: internal compiler error: in fill_block_cache, at gimple-range-cache.cc:1277 13 | } | ^ 0x9e79d7 ranger_cache::fill_block_cache(tree_node*, basic_block_def*, basic_block_def*) /testing/gcc/gcc_src_master/gcc/gimple-range-cache.cc:1277 0x1ed1ecd ranger_cache::block_range(irange&, basic_block_def*, tree_node*, bool) /testing/gcc/gcc_src_master/gcc/gimple-range-cache.cc:1107 0x1ecc4f8 gimple_ranger::range_of_expr(irange&, tree_node*, gimple*) /testing/gcc/gcc_src_master/gcc/gimple-range.cc:92 0xee7dff expr_not_equal_to(tree_node*, generic_wide_int const&) /testing/gcc/gcc_src_master/gcc/fold-const.c:10733 0xeec8e3 tree_single_nonzero_warnv_p(tree_node*, bool*) /testing/gcc/gcc_src_master/gcc/fold-const.c:15244 0xeed076 tree_expr_nonzero_p(tree_node*) /testing/gcc/gcc_src_master/gcc/fold-const.c:10706 0xefe7a8 fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) /testing/gcc/gcc_src_master/gcc/fold-const.c:12284 0xf0254d fold_build2_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) /testing/gcc/gcc_src_master/gcc/fold-const.c:13774 0x13fe25c simplify_using_initial_conditions(loop*, tree_node*) /testing/gcc/gcc_src_master/gcc/tree-ssa-loop-niter.c:2353 0x1404cd7 simplify_using_initial_conditions(loop*, tree_node*) /testing/gcc/gcc_src_master/gcc/tree-ssa-loop-niter.c:2333 0x1404cd7 number_of_iterations_exit_assumptions(loop*, edge_def*, tree_niter_desc*, gcond**, bool, basic_block_def**) /testing/gcc/gcc_src_master/gcc/tree-ssa-loop-niter.c:2590 0x1405be2 number_of_iterations_exit_assumptions(loop*, edge_def*, tree_niter_desc*, gcond**, bool, basic_block_def**) /testing/gcc/gcc_src_master/gcc/tree-ssa-loop-niter.c:2825 0x1405be2 number_of_iterations_exit(loop*, edge_def*, tree_niter_desc*, bool, bool, basic_block_def**) /testing/gcc/gcc_src_master/gcc/tree-ssa-loop-niter.c:2812 0x135f6f0 number_of_latch_executions(loop*) /testing/gcc/gcc_src_master/gcc/tree-scalar-evolution.c:2813 0x1405ef5 estimate_numbers_of_iterations(loop*) /testing/gcc/gcc_src_master/gcc/tree-ssa-loop-niter.c:4356 0x1408c87 max_loop_iterations(loop*, generic_wide_int >*) /testing/gcc/gcc_src_master/gcc/tree-ssa-loop-niter.c:4462 0x15d2f6f bounds_of_var_in_loop(tree_node**, tree_node**, range_query*, loop*, gimple*, tree_node*) /testing/gcc/gcc_src_master/gcc/vr-values.c:1708 0x1ed6641 fold_using_range::range_of_ssa_name_with_loop_info(irange&, tree_node*, loop*, gphi*, fur_source&) /testing/gcc/gcc_src_master/gcc/gimple-range-fold.cc:1282 0x1ed6e1e fold_using_range::range_of_phi(irange&, gphi*, fur_source&) /testing/gcc/gcc_src_master/gcc/gimple-range-fold.cc:837 0x1ed8e50 fold_using_range::fold_stmt(irange&, gimple*, fur_source&, tree_node*) /testing/gcc/gcc_src_master/gcc/gimple-range-fold.cc:554 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. GCC version: gcc version 12.0.0 20211107 (9defce622893f87d954e0089e0ea79e1e388a480) (GCC)
[Bug tree-optimization/103119] New: ICE in get_imports, at gimple-range-gori.cc:230
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103119 Bug ID: 103119 Summary: ICE in get_imports, at gimple-range-gori.cc:230 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- The bug is not reproducible on the trunk anymore (the reduction process took forever). I don't know if it was fixed or became latent. Feel free to close it if it is not relevant anymore. Reproducer: unsigned short a; bool b; int h, f; extern bool d[][1]; char g; void i() { for (short c = 0; c < 10; c += 3) for (unsigned e = 0; e < a; e = (d[c][0] ? true : 5) * (6021496ULL * b) ?: f) h = g; } Error: >$ g++ -O2 -c func.cpp during GIMPLE pass: vrp func.cpp: In function 'void i()': func.cpp:6:6: internal compiler error: in get_imports, at gimple-range-gori.cc:230 6 | void i() { | ^ 0x9e98e5 range_def_chain::get_imports(tree_node*) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:230 0x1edc480 range_def_chain::register_dependency(tree_node*, tree_node*, basic_block_def*) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:288 0x1edb976 range_def_chain::get_def_chain(tree_node*) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:383 0x1edbf98 range_def_chain::in_chain_p(tree_node*, tree_node*) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:198 0x1ede29b gori_compute::compute_operand_range(irange&, gimple*, irange const&, tree_node*, fur_source&) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:725 0x1edef21 gori_compute::compute_operand1_range(irange&, gimple*, irange const&, tree_node*, fur_source&) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:1078 0x1ede699 gori_compute::compute_operand_range(irange&, gimple*, irange const&, tree_node*, fur_source&) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:761 0x1edf989 gori_compute::outgoing_edge_range_p(irange&, edge_def*, tree_node*, range_query&) /testing/gcc/gcc_src_master/gcc/gimple-range-gori.cc:1259 0x1ed28c5 ranger_cache::range_on_edge(irange&, edge_def*, tree_node*) /testing/gcc/gcc_src_master/gcc/gimple-range-cache.cc:983 0x1ed2b69 ranger_cache::propagate_cache(tree_node*) /testing/gcc/gcc_src_master/gcc/gimple-range-cache.cc:1082 0x1ecdd9d gimple_ranger::range_of_stmt(irange&, gimple*, tree_node*) /testing/gcc/gcc_src_master/gcc/gimple-range.cc:280 0x15d1934 simplify_using_ranges::fold_cond(gcond*) /testing/gcc/gcc_src_master/gcc/vr-values.c:3492 0x15d1ea8 simplify_using_ranges::simplify_cond_using_ranges_1(gcond*) /testing/gcc/gcc_src_master/gcc/vr-values.c:3568 0x15d6f87 simplify_using_ranges::simplify(gimple_stmt_iterator*) /testing/gcc/gcc_src_master/gcc/vr-values.c:4386 0x154e3c8 rvrp_folder::fold_stmt(gimple_stmt_iterator*) /testing/gcc/gcc_src_master/gcc/tree-vrp.c:4324 0x14434d6 substitute_and_fold_dom_walker::before_dom_children(basic_block_def*) /testing/gcc/gcc_src_master/gcc/tree-ssa-propagate.c:870 0x1e9c847 dom_walker::walk(basic_block_def*) /testing/gcc/gcc_src_master/gcc/domwalk.c:309 0x1442689 substitute_and_fold_engine::substitute_and_fold(basic_block_def*) /testing/gcc/gcc_src_master/gcc/tree-ssa-propagate.c:987 0x15442c1 execute_ranger_vrp(function*, bool) /testing/gcc/gcc_src_master/gcc/tree-vrp.c:4349 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. GCC version: gcc version 12.0.0 20211105 (614b39757b8b61f70ac1c666edb7a01a5fc19cd4) (GCC)
[Bug ipa/103073] [12 Regression] ICE in insert_access, at ipa-modref-tree.h:578 since r12-4401-gfecd145359fc981b
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103073 --- Comment #4 from Vsevolod Livinskiy --- (In reply to Martin Liška from comment #2) > Started with r12-4401-gfecd145359fc981b. > > @Vsevolod: Is it a yarpgen test-case? Yes. I've added stencil support recently, but it was a surprise to trigger a bug in IPA. BTW, should I add new bugs to the meta-bug before or after they were confirmed?
[Bug ipa/103073] New: [12 Regression] ICE in insert_access, at ipa-modref-tree.h:578
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103073 Bug ID: 103073 Summary: [12 Regression] ICE in insert_access, at ipa-modref-tree.h:578 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ipa Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru CC: marxin at gcc dot gnu.org Target Milestone: --- I'm not sure about the component. Would you mind checking and fixing it in case it is wrong? Link to the Compiler Explorer: https://godbolt.org/z/K17Grnez9 Reproducer: int a; void b(bool c[], char d[], bool g[][55][21]) { for (signed e = 0; e < 11; e += 3) for (unsigned f = c[0] + 1; f < d[0]; f += 3) a = g[0][e][f + 2]; } Error: >$ g++ -c func.cpp -O3 during GIMPLE pass: modref func.cpp: In function 'void b(bool*, char*, bool (*)[55][21])': func.cpp:2:6: internal compiler error: in insert_access, at ipa-modref-tree.h:578 2 | void b(bool c[], char d[], bool g[][55][21]) { | ^ 0x103ae7a modref_ref_node::insert_access(modref_access_node, unsigned long, bool) /testing/gcc/gcc_src_master/gcc/ipa-modref-tree.h:578 0x103b16d modref_tree::insert(int, int, modref_access_node, bool) /testing/gcc/gcc_src_master/gcc/ipa-modref-tree.h:848 0x102cafe record_access /testing/gcc/gcc_src_master/gcc/ipa-modref.c:758 0x102d7ff analyze_load /testing/gcc/gcc_src_master/gcc/ipa-modref.c:1262 0xf84246 walk_stmt_load_store_addr_ops(gimple*, void*, bool (*)(gimple*, tree_node*, tree_node*, void*), bool (*)(gimple*, tree_node*, tree_node*, void*), bool (*)(gimple*, tree_node*, tree_node*, void*)) /testing/gcc/gcc_src_master/gcc/gimple-walk.c:800 0x1034872 analyze_stmt /testing/gcc/gcc_src_master/gcc/ipa-modref.c:1313 0x1034872 analyze_function /testing/gcc/gcc_src_master/gcc/ipa-modref.c:2366 0x1035e21 execute /testing/gcc/gcc_src_master/gcc/ipa-modref.c:3213 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/testing/gcc/bin_master/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /testing/gcc/gcc_src_master/configure --enable-multilib --prefix=/testing/gcc/bin_master --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20211103 (62af7d9402f551fa708125fafed2950d8912b25e) (GCC)
[Bug tree-optimization/103037] New: [11/12 Regression] Wrong code with -O2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103037 Bug ID: 103037 Summary: [11/12 Regression] Wrong code with -O2 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Link to the Compiler Explorer: https://godbolt.org/z/eaGzsPnax Reproducer: #include short var_3 = 2; unsigned char var_9 = 23; unsigned short var_11; unsigned short arr_4 [23]; void test() __attribute__((noipa)); const unsigned short &min(unsigned short &d, const unsigned short &e) { return e < d ? e : d; } void test() { for (int a = 0; a < var_9; a += 3) var_11 = min(arr_4[a], 1) / (arr_4[a] ? arr_4[a] : var_3); } int main() { for (size_t i_0 = 0; i_0 < 23; ++i_0) arr_4 [i_0] = 2; test(); printf("%hu\n", var_11); if (var_11 != 0) __builtin_abort(); } Error: >$ g++ driver.cpp -O0 && ./a.out 0 >$ g++ driver.cpp -O2 && ./a.out 1 GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/testing/gcc/bin_master/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /testing/gcc/gcc_src_master/configure --enable-multilib --prefix=/testing/gcc/bin_master --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20211101 (679652a77da60078392a834ed4b6b910127dbf24) (GCC)
[Bug tree-optimization/95916] [11 Regression] ICE during GIMPLE pass: slp : verify_ssa failed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95916 Richard Biener changed: What|Removed |Added CC||dcb314 at hotmail dot com Vsevolod Livinskiy changed: What|Removed |Added Blocks||103035 --- Comment #6 from Richard Biener --- *** Bug 95987 has been marked as a duplicate of this bug. *** Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103035 [Bug 103035] [meta-bug] YARPGen bugs
[Bug tree-optimization/103035] New: [meta-bug] YARPGen bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103035 Bug ID: 103035 Summary: [meta-bug] YARPGen bugs Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- This is a meta-bug that is supposed to keep track of bugs that were found with YARPGen (https://github.com/intel/yarpgen). YARPGen is a random program generator, which produces correct runnable C/C++. We use it to fuzz GCC and other compilers. Special thanks to Martin Liška for submitting some of them. If you use YARPGen to report a bug, please add it to this meta-bug.
[Bug tree-optimization/102920] New: [12 Regression] Wrong code with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102920 Bug ID: 102920 Summary: [12 Regression] Wrong code with -O3 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- https://godbolt.org/z/qn3dsxsW8 Reproducer: #include unsigned short a = 42; unsigned short b = 1; long long int c = 1; unsigned char var_120; unsigned char var_123; void test(unsigned short a, unsigned short b, long long int c) __attribute__((noipa)); void test(unsigned short a, unsigned short b, long long c) { for (char i = 0; i < (char)c; i += 5) if (!b) var_120 = a; else var_123 = a; } int main() { test(a, b, c); printf("%hhu\n", var_123); //if (var_123 != 42) //__builtin_abort(); } Error: >$ g++ -O3 small.cpp && ./a.out 0 >$ g++ -O2 small.cpp && ./a.out 42 GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/testing/gcc/bin_master/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /testing/gcc/gcc_src_master/configure --enable-multilib --prefix=/testing/gcc/bin_master --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20211023 (experimental) (GCC) root@abe71269b867:/testing/result/S_1635079215/reduce# cat /testing/gcc/gcc_rev.txt git://gcc.gnu.org/git/gcc.git:master e3725624ec0735996a18e1a90317e230bef899ac
[Bug tree-optimization/102788] New: Wrong code with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102788 Bug ID: 102788 Summary: Wrong code with -O3 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Link to the Compiler Explorer: https://godbolt.org/z/78ab77Env Reproducer: #include unsigned long long int var_4 = 235; unsigned long long int var_5 = 74; signed char var_12 = -99; unsigned long long int var_349; unsigned char var_645; void test(); const unsigned long long &min(const unsigned long long &a, const unsigned long long &b) { return b < a ? b : a; } void test() __attribute__((noipa)); void test() { for (short c = var_12; c; c += 5) ; for (int e = 0; e < 12; e += 1) { var_349 = var_4 ? 235 : 74; var_645 = min((unsigned long long)true, var_5 ? var_12 : var_4); } } int main() { test(); printf("%d\n", (int)var_645); //if (var_645 != 1) // __builtin_abort(); } Error: >$g++ -O2 small.cpp && ./a.out 1 >$g++ -O3 small.cpp && ./a.out 255 GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/testing/gcc/bin_master/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /testing/gcc/gcc_src_master/configure --enable-multilib --prefix=/testing/gcc/bin_master --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20211011 (30cce6f65a77b8eaa22f3efff7f1ba54858106f9) (GCC)
[Bug tree-optimization/102696] New: ICE in vect_build_slp_tree, at tree-vect-slp.c:1551 for skylake-avx512 and icelake-server
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102696 Bug ID: 102696 Summary: ICE in vect_build_slp_tree, at tree-vect-slp.c:1551 for skylake-avx512 and icelake-server Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Link to the Compiler Explorer: https://godbolt.org/z/WhYP35KKT Reproducer: int a; extern bool b[][14]; char h; void f(short g[][14]) { for (short d = h; d < 21; d += 1) for (unsigned char e = 0; e < 14; e += 1) { a = 0; b[d][e] = g[d][e]; } } Error: >$ g++ -c -O3 -march=skylake-avx512 func.cpp during GIMPLE pass: slp func.cpp: In function 'void f(short int (*)[14])': func.cpp:4:6: internal compiler error: in vect_build_slp_tree, at tree-vect-slp.c:1551 4 | void f(short g[][14]) { | ^ 0x153e92a vect_build_slp_tree /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:1551 0x153ee59 vect_build_slp_tree_2 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:2199 0x153e41c vect_build_slp_tree /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:1532 0x153ee59 vect_build_slp_tree_2 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:2199 0x153e41c vect_build_slp_tree /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:1532 0x153ee59 vect_build_slp_tree_2 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:2199 0x153e41c vect_build_slp_tree /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:1532 0x153ee59 vect_build_slp_tree_2 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:2199 0x153e41c vect_build_slp_tree /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:1532 0x1543ac2 vect_build_slp_instance /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3012 0x1544d35 vect_analyze_slp_instance /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3332 0x1543d96 vect_build_slp_instance /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3230 0x1544d35 vect_analyze_slp_instance /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3332 0x1543d96 vect_build_slp_instance /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3230 0x1544d35 vect_analyze_slp_instance /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3332 0x154979a vect_analyze_slp(vec_info*, unsigned int) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:3365 0x154d316 vect_slp_analyze_bb_1 /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:5746 0x154d316 vect_slp_region /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:5848 0x154f495 vect_slp_bbs /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:6040 0x154f799 vect_slp_function(function*) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:6128 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. root@86380205c3f4:/testing/result/S_3142105512/reduce# g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/testing/gcc/bin_master/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /testing/gcc/gcc_src_master/configure --enable-multilib --prefix=/testing/gcc/bin_master --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20211011 (30cce6f65a77b8eaa22f3efff7f1ba54858106f9) (GCC)
[Bug tree-optimization/102622] New: Wrong code with -O3 for skylake-avx512 and icelake-server
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102622 Bug ID: 102622 Summary: Wrong code with -O3 for skylake-avx512 and icelake-server Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: // func.cpp #include extern int var_20, var_22; extern short arr_32[]; extern char arr_45[]; void test(int a, unsigned b, long long *c) { for (short d = 0; d < 13; d++) { for (int e = 0; e < a; e += 3) var_20 = 0; if (std::max(b, unsigned((short)b))) { arr_32[d] = 0; var_22 = *c; } for (unsigned f = 0; f < 69; f += 4) arr_45[f] = 0; } } driver.cpp #include unsigned long long int a = 10693271954245845448ULL; unsigned int b = 1144022456U; long long int c = 42; int var_20 = 0; long long int var_22 = 0; unsigned short arr_32 [13]; unsigned char arr_45 [69]; void test(int a, unsigned int b, long long int* c); int main() { test(a, b, &c); printf("%llu\n", var_22); } Error: >$ g++ -O3 -march=skylake-avx512 func.cpp driver.cpp && sde -skx -- ./a.out 0 >$ g++ -O2 -march=skylake-avx512 func.cpp driver.cpp && sde -skx -- ./a.out 42 GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/testing/gcc/bin/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /testing/gcc/gcc_src/configure --enable-multilib --prefix=/testing/gcc/bin --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20211004 (154fd0896ef22fcf5235e35e2b7953947a33) (GCC)
[Bug tree-optimization/102572] New: ICE for skx in vect_build_gather_load_calls, at tree-vect-stmts.c:2835
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102572 Bug ID: 102572 Summary: ICE for skx in vect_build_gather_load_calls, at tree-vect-stmts.c:2835 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: int a, b, c, f; void g(bool h, int d[][5]) { for (short i = f; i; i += 1) { a = h && d[0][i]; for (int j = 0; j < 4; j += c) b = 0; } } Error: >$ g++ -O3 -march=skylake-avx512 -c func.cpp during GIMPLE pass: vect func.cpp: In function 'void g(bool, int (*)[5])': func.cpp:2:6: internal compiler error: in vect_build_gather_load_calls, at tree-vect-stmts.c:2835 2 | void g(bool h, int d[][5]) { | ^ 0x906a36 vect_build_gather_load_calls /testing/gcc/gcc_src/gcc/tree-vect-stmts.c:2835 0x906a36 vectorizable_load /testing/gcc/gcc_src/gcc/tree-vect-stmts.c:8785 0x1500240 vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) /testing/gcc/gcc_src/gcc/tree-vect-stmts.c:11060 0x1503e6a vect_transform_loop_stmt /testing/gcc/gcc_src/gcc/tree-vect-loop.c:9362 0x151fd67 vect_transform_loop(_loop_vec_info*, gimple*) /testing/gcc/gcc_src/gcc/tree-vect-loop.c:9798 0x1553a8f try_vectorize_loop_1 /testing/gcc/gcc_src/gcc/tree-vectorizer.c:1109 0x1554591 vectorize_loops() /testing/gcc/gcc_src/gcc/tree-vectorizer.c:1248 GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/testing/gcc/bin/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /testing/gcc/gcc_src/configure --enable-multilib --prefix=/testing/gcc/bin --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20211002 (d7705b0ada9e9852b580ca25a45570c82152f287) (GCC)
[Bug tree-optimization/102511] New: GCC produces incorrect code for -O3: first element of the array is skipped
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102511 Bug ID: 102511 Summary: GCC produces incorrect code for -O3: first element of the array is skipped Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: //func.cpp extern char arr_15[]; void test(signed char a, unsigned short b, unsigned long long c, unsigned short f) { for (int d = b - 8; d < b; d += 2) for (short e = 0; e < (unsigned short)((f ? 122 : 0) ^ (a ? c : 0)) - 64055; e += 3) arr_15[d] = 42; } //driver.cpp #include unsigned char arr_15 [8]; void test(signed char a, unsigned short b, unsigned long long int c, unsigned short f); int main() { test(37, 8, 12325048486467861044ULL, 45936); for (size_t i_0 = 0; i_0 < 8; ++i_0) printf("%d ", arr_15 [i_0]); printf("\n"); } Error: >$ g++ -O3 driver.cpp func.cpp && ./a.out 0 0 42 0 42 0 42 0 >$ g++ -O2 driver.cpp func.cpp && ./a.out 42 0 42 0 42 0 42 0 GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/testing/gcc/bin/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /testing/gcc/gcc_src/configure --enable-multilib --prefix=/testing/gcc/bin --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20210927 (51018dd1395c72b3681ae5f84eceb94320472922) (GCC)
[Bug tree-optimization/99777] New: ICE in build2, at tree.c:4869 with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99777 Bug ID: 99777 Summary: ICE in build2, at tree.c:4869 with -O3 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- The error is not specific to skylake-avx512, I have a reproducer that shows it. Reproducer: #include extern int var_142; extern int a, c; long h; unsigned long long e; signed char d; extern short arr_323[][7][5][30]; void test(long long b, short f[][17][25][22][20]) { for (char i = 0; i < 7; i += 3) for (unsigned char l = e; l < 5; l += 2) { if (std::max((long long)0, std::min((long long)7, b))) for (bool j = 0; j < 1; j = b) { for (unsigned k = d; k < 20; k++) h = f[0][i][l][b][k]; for (int m = 0; m < 5; m++) arr_323[c][i][l][m] = 0; } for (int n = 0; n < 4; n += a) var_142 = n; } } Error: >$ g++ -O3 -march=skylake-avx512 func.cpp -c during GIMPLE pass: lim func.cpp: In function ‘void test(long long int, short int (*)[17][25][22][20])’: func.cpp:10:6: internal compiler error: in build2, at tree.c:4869 10 | void test(long long b, | ^~~~ 0x85386f build2(tree_code, tree_node*, tree_node*, tree_node*) gcc/gcc_src/gcc/tree.c:4869 0xddb96f build2_loc gcc/gcc_src/gcc/tree.h:4407 0xddb96f fold_build2_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) gcc/gcc_src/gcc/fold-const.c:13736 0xde8de3 extract_muldiv_1 gcc/gcc_src/gcc/fold-const.c:6976 0xdea422 extract_muldiv gcc/gcc_src/gcc/fold-const.c:6662 0xdea422 extract_muldiv gcc/gcc_src/gcc/fold-const.c:6662 0xdea422 extract_muldiv gcc/gcc_src/gcc/fold-const.c:6662 0xdd6bb1 fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) gcc/gcc_src/gcc/fold-const.c:11486 0xddb94d fold_build2_loc(unsigned int, tree_code, tree_node*, tree_node*, tree_node*) gcc/gcc_src/gcc/fold-const.c:13734 0x1c3b096 aff_combination_add_elt(aff_tree*, tree_node*, generic_wide_int > const&) gcc/gcc_src/gcc/tree-affine.c:187 0x1c3b3d5 aff_combination_add(aff_tree*, aff_tree*) gcc/gcc_src/gcc/tree-affine.c:215 0x124fc0f mem_refs_may_alias_p gcc/gcc_src/gcc/tree-ssa-loop-im.c:1718 0x124fc83 refs_independent_p gcc/gcc_src/gcc/tree-ssa-loop-im.c:2703 0x12502b4 ref_indep_loop_p gcc/gcc_src/gcc/tree-ssa-loop-im.c:2764 0x1255ff4 can_sm_ref_p gcc/gcc_src/gcc/tree-ssa-loop-im.c:2832 0x1255ff4 find_refs_for_sm gcc/gcc_src/gcc/tree-ssa-loop-im.c:2853 0x1255ff4 store_motion_loop gcc/gcc_src/gcc/tree-ssa-loop-im.c:2889 0x1255ddc store_motion_loop gcc/gcc_src/gcc/tree-ssa-loop-im.c:2896 0x1255ddc store_motion_loop gcc/gcc_src/gcc/tree-ssa-loop-im.c:2896 0x1258262 do_store_motion gcc/gcc_src/gcc/tree-ssa-loop-im.c:2911 gcc version 11.0.1 20210323 (6b1f841ce0ccf30eda7896ba5ab0aa94c72307b2) (GCC)
[Bug tree-optimization/98694] New: GCC produces incorrect code for loops with -O3 for skylake-avx512 and icelake-server
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98694 Bug ID: 98694 Summary: GCC produces incorrect code for loops with -O3 for skylake-avx512 and icelake-server Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- The reproducer is a bit big, but I was not able to reduce it further. Reproducer: // func.cpp #include extern short var_1, var_29, var_89; extern unsigned var_2, var_11; extern bool var_4; extern long var_6; extern char var_7; extern int var_8, var_10; extern short arr_206[10][14][13][21][14] __attribute__((aligned)); extern int arr_257[]; long f(long l) { return 0 > l ? 0 : l; } void test() { var_11 = var_6; for (char a = 0; a < (char)var_2; a = 6) for (int b = 0; b < var_2; b = ~0) for (int c = 0; c < 2; c = var_1) for (bool d = 0; d < var_4; d = 1) var_29 = f(~var_6); for (short e = 0; e < short(var_6); e = var_6) { for (; 0 < (int)var_6;) ; for (char g = 0; g < 4; g++) for (; std::min(var_7 / 405077347810ULL, (unsigned long long)9); var_7 += 2) for (char h = 0; h < (char)var_8; h += 4) for (short i = 0; i < (var_4 && var_6) + 13; i++) { arr_206[0][g][0][h][i] = var_6; var_89 = std::min(var_4 ?: 709U, (unsigned)var_4); } for (short j = 0; j < var_2; j += 4) for (int k = 0; k < 5U; k = var_10) arr_257[k] = var_6; } } // driver.cpp #include short var_1 = (short)7531; unsigned int var_2 = 187158918U; bool var_4 = (bool)1; unsigned long long int var_6 = 10263287916162477044ULL; signed char var_7 = 0; long long int var_8 = 21; unsigned int var_10 = 3309705747U; unsigned int var_11 = 222967114U; short var_29 = (short)-22723; short var_89 = (short)-19017; short arr_206 [10] [14] [13] [21] [14] __attribute__((aligned)); int arr_257 [5]; void test(); int main() { test(); for (size_t i_0 = 0; i_0 < 5; ++i_0) printf("%d ", arr_257 [i_0]); printf("\n"); } Error: >$ g++ -march=skylake-avx512 func.cpp driver.cpp -O2 && sde -skx -- ./a.out -2039714828 0 0 0 0 >$ g++ -march=skylake-avx512 func.cpp driver.cpp -O3 && sde -skx -- ./a.out 27636 0 0 0 0 gcc version 11.0.0 20210113 (8fc183ccd0628465205b8a88c29ab69bfe74a08a)
[Bug tree-optimization/98640] New: GCC produces incorrect code with -O1 and higher
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98640 Bug ID: 98640 Summary: GCC produces incorrect code with -O1 and higher Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: #include unsigned long long int var_0 = 18128133247277979402ULL; long long int var_14 = 6557021550272328915LL; unsigned long long int var_83 = 10966786425750692026ULL; void test() { var_14 = var_0 + (bool)7; var_83 = 1 + (int)var_0; // 1 + 888395530 } int main() { test(); printf("%llu\n", var_83); } https://godbolt.org/z/axYx1f >$ g++ -O0 driver.cpp && ./a.out 888395531 >$ g++ -O1 driver.cpp && ./a.out 18128133247277979403 gcc version 11.0.0 20210112 (cf2ac1c30af0fa783c8d72e527904dda5d8cc330)
[Bug tree-optimization/98381] New: Wrong code with -O3 -march=skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98381 Bug ID: 98381 Summary: Wrong code with -O3 -march=skylake-avx512 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: //func.cpp extern bool var_22; void test(long long a, unsigned b, unsigned long long c) { for (long i = 0; i < 16; i += 1ULL) if (a) var_22 = 5023804122334ULL >= (char)c; } //driver.cpp #include long long int a = -2161098602020439353LL; unsigned int b = 1621447385U; unsigned long long int c = 16505450185101189749ULL; bool var_22 = (bool)0; void test(long long int a, unsigned int b, unsigned long long int c); int main() { test(a, b, c); printf("%d\n", (int)var_22); } Error: >$ g++ -O3 -march=skylake-avx512 func.cpp driver.cpp && sde -skx -- ./a.out 0 >$ g++ -O0 func.cpp driver.cpp && sde -skx -- ./a.out 1 gcc version 11.0.0 20201217 (6f8486523f61bf0aa476dfa4197d1e3b71a0a8f3) (GCC)
[Bug tree-optimization/98308] New: ICe in in vect_slp_analyze_node_operations, at tree-vect-slp.c:3764 with -O3 -march=skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98308 Bug ID: 98308 Summary: ICe in in vect_slp_analyze_node_operations, at tree-vect-slp.c:3764 with -O3 -march=skylake-avx512 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: extern unsigned long long int arr_86[]; extern unsigned long long int arr_87[][15]; void test(bool a, unsigned short c[][15], unsigned char d[]) { for (short h = 0; h < 10; h++) for (char i = 0; i < 15; i += 2) { arr_86[0] = d[0]; arr_87[h][0] = a ? c[h][i] : 0; } } Error: >$ g++ -c -O3 -march=skylake-avx512 func.cpp during GIMPLE pass: vect func.cpp: In function ‘void test(bool, short unsigned int (*)[15], unsigned char*)’: func.cpp:4:6: internal compiler error: in vect_slp_analyze_node_operations, at tree-vect-slp.c:3764 4 | void test(bool a, unsigned short c[][15], unsigned char d[]) { | ^~~~ 0x886a4d vect_slp_analyze_node_operations gcc_src/gcc/tree-vect-slp.c:3764 0x1425a73 vect_slp_analyze_node_operations gcc_src/gcc/tree-vect-slp.c:3719 0x1425a73 vect_slp_analyze_node_operations gcc_src/gcc/tree-vect-slp.c:3719 0x1425a73 vect_slp_analyze_node_operations gcc_src/gcc/tree-vect-slp.c:3719 0x1427101 vect_slp_analyze_operations(vec_info*) gcc_src/gcc/tree-vect-slp.c:3914 0x1404939 vect_analyze_loop_2 gcc_src/gcc/tree-vect-loop.c:2391 0x1404939 vect_analyze_loop(loop*, vec_info_shared*) gcc_src/gcc/tree-vect-loop.c:2929 0x14311f4 try_vectorize_loop_1 gcc_src/gcc/tree-vectorizer.c:1008 0x1431c59 vectorize_loops() gcc_src/gcc/tree-vectorizer.c:1242 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. gcc version 11.0.0 20201214 (22a90217305ee8c116bbc12c8d07abe7ca0ff61d)
[Bug tree-optimization/98069] New: Miscompilation with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98069 Bug ID: 98069 Summary: Miscompilation with -O3 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: //func.cpp extern long long var_3; extern short var_8; extern int var_17; extern short arr_165[]; long c(long e, long f) { return f ? e : f; } void test() { for (int b = 0; b < 19; b = var_17) for (int d = int(~c(-2147483647 - 1, var_3)) - 2147483647; d < 22; d++) arr_165[d] = var_8; } //driver.cpp #include long long int var_3 = -166416893043554447LL; short var_8 = (short)27092; unsigned int var_17 = 75036300U; short arr_165[23]; void test(); int main() { for (size_t i_3 = 0; i_3 < 23; ++i_3) arr_165[i_3] = (short)-8885; test(); printf("%d\n", arr_165[0]); } >$ g++ -O3 func.cpp driver.cpp && ./a.out Segmentation fault (core dumped) >$ g++ -O2 func.cpp driver.cpp && ./a.out 27092 gcc version 11.0.0 20201126 (beb9afcaf1466996a301c778596c5df209e7913c)
[Bug tree-optimization/98064] New: ICE in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:726 with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98064 Bug ID: 98064 Summary: ICE in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:726 with -O3 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$ g++ -c -O3 func.cpp during GIMPLE pass: slp func.cpp: In function ‘void test()’: func.cpp:8:6: internal compiler error: in check_loop_closed_ssa_def, at tree-ssa-loop-manip.c:726 8 | void test() { | ^~~~ 0x84b706 check_loop_closed_ssa_def /home/vlivinsk/workspace/gcc/gcc_src/gcc/tree-ssa-loop-manip.c:726 0x12ae78d check_loop_closed_ssa_bb /home/vlivinsk/workspace/gcc/gcc_src/gcc/tree-ssa-loop-manip.c:752 0x12b05d6 verify_loop_closed_ssa(bool, loop*) /home/vlivinsk/workspace/gcc/gcc_src/gcc/tree-ssa-loop-manip.c:777 0x12b05d6 verify_loop_closed_ssa(bool, loop*) /home/vlivinsk/workspace/gcc/gcc_src/gcc/tree-ssa-loop-manip.c:761 0x1062c24 execute_function_todo /home/vlivinsk/workspace/gcc/gcc_src/gcc/passes.c:2057 0x10638ae execute_todo /home/vlivinsk/workspace/gcc/gcc_src/gcc/passes.c:2093 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Reproducer: #include extern long var_2; extern int var_3, var_8; extern long long var_5; extern unsigned short arr_353[]; extern short arr_362[]; extern int arr_518[]; void test() { for (char d = 0; d < 013; d += 4) { for (char e = 0; e < 11; e++) arr_353[e] = var_2 | std::min((long long)7, var_5); for (int f = var_5; f; f += 4) for (short g = var_8; g; g++) arr_362[g] = 0; } for (short h = 5; (short)var_2; h += 5) arr_518[h] = 0; } gcc version 11.0.0 20201126 (beb9afcaf1466996a301c778596c5df209e7913c)
[Bug tree-optimization/98048] New: ICE in build_vector_from_val, at tree.c:1985
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98048 Bug ID: 98048 Summary: ICE in build_vector_from_val, at tree.c:1985 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: extern short var_0; extern int var_3; extern int arr_277[]; int a(int b, int c) { return b < c ? b : c; } int e; void test() { e = var_0; for (int d = 0; d < 9; d++) if (var_3) arr_277[d] = a(var_0, -var_0); } Error: >$ g++ -c -O3 func.cpp during GIMPLE pass: veclower2 func.cpp: In function ‘void test()’: func.cpp:6:6: internal compiler error: in build_vector_from_val, at tree.c:1985 6 | void test() { | ^~~~ 0x88bffd build_vector_from_val(tree_node*, tree_node*) /home/vlivinsk/workspace/gcc/gcc_src/gcc/tree.c:1985 0x13a22cd expand_vector_operations_1 /home/vlivinsk/workspace/gcc/gcc_src/gcc/tree-vect-generic.c:2095 0x13a22cd expand_vector_operations /home/vlivinsk/workspace/gcc/gcc_src/gcc/tree-vect-generic.c:2291 0x13a22cd execute /home/vlivinsk/workspace/gcc/gcc_src/gcc/tree-vect-generic.c:2337 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. gcc version 11.0.0 20201126 (beb9afcaf1466996a301c778596c5df209e7913c)
[Bug rtl-optimization/96755] New: ICE in final_scan_insn_1, at final.c:3073 with -O3 -march=skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96755 Bug ID: 96755 Summary: ICE in final_scan_insn_1, at final.c:3073 with -O3 -march=skylake-avx512 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- >$ g++ -O3 -march=skylake-avx512 -c func.cpp func.cpp: In function ‘void test(short unsigned int, unsigned char, long long int)’: func.cpp:13:1: error: could not split insn 13 | } | ^ (insn 644 21 817 50 (set (reg:DI 70 k2 [orig:83 D.4406 ] [83]) (zero_extend:DI (not:SI (reg:SI 70 k2 [orig:505 b ] [505] "func.cpp":10:18 622 {*one_cmplsi2_1_zext} (nil)) during RTL pass: final func.cpp:13:1: internal compiler error: in final_scan_insn_1, at final.c:3073 0x7cf5e7 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /gcc/rtl-error.c:108 0x75b978 final_scan_insn_1 /gcc/final.c:3073 0xd9b5cf final_scan_insn(rtx_insn*, _IO_FILE*, int, int, int*) /gcc/final.c:3152 0xd9b8c7 final_1 /gcc/final.c:2020 0xd9c298 rest_of_handle_final /gcc/final.c:4658 0xd9c298 execute /gcc/final.c:4736 Reproducer: extern long var_22; extern int arr_3[]; extern int arr_4[][20][9]; short a; void test(unsigned short b, unsigned char e, long long g) { for (long c = 0; c < 20ULL; c = g) for (short d = 0; d < 9; d++) for (char f = e; f < 8; f += 4) { arr_3[f] = 0; var_22 = ~(unsigned)b; arr_4[c][d][f] = a; } } gcc version 11.0.0 20200823 (87c753ac241f25d222d46ba1ac66ceba89d6a200)
[Bug tree-optimization/96693] New: GCC produces incorrect code with -O2 for loops
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96693 Bug ID: 96693 Summary: GCC produces incorrect code with -O2 for loops Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$ g++ -O2 driver.cpp func.cpp && ./a.out 0 >$ g++ -O0 driver.cpp func.cpp && ./a.out 42 Reproducer: //func.cpp extern char var_20; extern short var_22; void test(unsigned a, bool b, long long p12[23]) { for (int c = 0; c < 2;) { if (b) { for (int d = 0; d < 4082; d += 2) for (int e = 0; e < a; e = 2) var_20 = 0; var_22 = 0; } c = p12[c]; } } //driver.cpp #include unsigned int var_4 = 140810747U; bool var_7 = (bool)0; unsigned char var_20 = (unsigned char)82; unsigned short var_22 = 42; long long int arr_9 [23] ; void test(unsigned int var_4, bool var_7, long long int arr_9 [23]); int main() { for (size_t i_0 = 0; i_0 < 23; ++i_0) arr_9 [i_0] = -722784397873599555LL; test(var_4, var_7, arr_9); printf("%d\n", var_22); } GCC version: 11.0.0 20200816 (23747614cc8fc137c1f2ca64c8e224125a72fae5) + fix proposed in bug 95396
[Bug target/96415] GCC produces incorrect code for loops with -O3 for skylake-avx512 and icelake-server
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96415 Vsevolod Livinskiy changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #2 from Vsevolod Livinskiy --- You are right, it is a sde bug. It works on real hardware and a new version of sde. Sorry to bother you and thanks for looking into this!
[Bug tree-optimization/96415] New: GCC produces incorrect code for loops with -O3 for skylake-avx512 and icelake-server
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96415 Bug ID: 96415 Summary: GCC produces incorrect code for loops with -O3 for skylake-avx512 and icelake-server Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$ g++ -O0 driver.cpp func.cpp && ./a.out 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 >$ g++ -O3 driver.cpp func.cpp -march=skylake-avx512 && sde -skx -- ./a.out 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 Reproducer: //driver.cpp #include unsigned short var_0 = 14; unsigned int arr_10 [16]; void test(unsigned short var_0); int main() { test(var_0); for (int i = 0; i < 16; ++i) printf("%u ", arr_10[i]); printf("\n"); } //func.cpp extern int arr_10[16]; void test(unsigned short a) { for (unsigned e = 0; e < 16; e += 4) for (char f = 0; f < 6; f += 4) for (unsigned g = 0; g < a + 1; g++) arr_10[g] = 1; } GCC version: 11.0.0 (3a4a92598014d33ef2c8b8ec38d8ad917812921a) I also applied the fix for bug #95396
[Bug tree-optimization/96022] New: ICE during GIMPLE pass: slp in operator[], at vec.h:867
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96022 Bug ID: 96022 Summary: ICE during GIMPLE pass: slp in operator[], at vec.h:867 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- >$ g++ -c -O3 func.cpp during GIMPLE pass: slp func.cpp: In function ‘void test(short int, bool, int)’: func.cpp:3:6: internal compiler error: in operator[], at vec.h:867 3 | void test(short a, bool, int p8) { | ^~~~ 0x850b10 vec::operator[](unsigned int) gcc/vec.h:867 0x850b10 vec::operator[](unsigned int) gcc/vec.h:1433 0x852d71 vec::operator[](unsigned int) gcc/tree.h:3424 0x852d71 vectorizable_shift gcc/tree-vect-stmts.c:5492 0x1385aa0 vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) gcc/tree-vect-stmts.c:10640 0x13b08e3 vect_schedule_slp_instance gcc/tree-vect-slp.c:4350 0x13b0904 vect_schedule_slp_instance gcc/tree-vect-slp.c:4229 0x13b0904 vect_schedule_slp_instance gcc/tree-vect-slp.c:4229 0x13b72a6 vect_schedule_slp(vec_info*) gcc/tree-vect-slp.c:4465 0x13b9af0 vect_slp_bb_region gcc/tree-vect-slp.c:3303 0x13b9af0 vect_slp_bb(basic_block_def*) gcc/tree-vect-slp.c:3433 0x13bb466 execute gcc/tree-vectorizer.c:1384 Reproducer: extern int arr_6[]; extern char arr_7[] __attribute__((aligned)); void test(short a, bool, int p8) { for (bool b = 0; b < (bool)p8; b = 1) for (short c = 0; c < 5; c++) { arr_6[c] = (long)2 << a - 30574; arr_7[c] = 0; } } GCC version: 11.0.0 20200630 (67ef8cfc1c1d440eafa89a26710bced934a485dc) (GCC)
[Bug tree-optimization/95916] ICE during GIMPLE pass: slp : verify_ssa failed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95916 --- Comment #1 from Vsevolod Livinskiy --- This bug might be related to bug 95761
[Bug tree-optimization/95916] New: ICE during GIMPLE pass: slp : verify_ssa failed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95916 Bug ID: 95916 Summary: ICE during GIMPLE pass: slp : verify_ssa failed Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$ g++ -c -O3 func.cpp func.cpp: In function ‘void test()’: func.cpp:5:6: error: definition in block 3 follows the use 5 | void test() { | ^~~~ for SSA_NAME: var_5.3_5 in statement: vect__6.8_50 = vect__4.7_58 << var_5.3_5; during GIMPLE pass: slp func.cpp:5:6: internal compiler error: verify_ssa failed 0x1339a82 verify_ssa(bool, bool) gcc/tree-ssa.c:1208 0x1025705 execute_function_todo gcc/passes.c:1992 0x10263de execute_todo gcc/passes.c:2039 Reproducer: extern short var_3, var_8; extern int var_5; extern char var_10; extern int arr_99[][16]; void test() { for (; 0 < var_10;) for (long a(var_8);; a++) arr_99[4][a] = var_3 << var_5; } GCC version: 11.0.0 20200625 (77d455ee81ec3a23f8b20259a31ab963716f8e82)
[Bug tree-optimization/95717] ICE during GIMPLE pass: vect: verify_ssa failed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95717 --- Comment #1 from Vsevolod Livinskiy --- It might be related to bug 94443
[Bug tree-optimization/95717] New: ICE during GIMPLE pass: vect: verify_ssa failed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95717 Bug ID: 95717 Summary: ICE during GIMPLE pass: vect: verify_ssa failed Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: $ g++ -c -O3 func.cpp func.cpp: In function ‘void g(bool)’: func.cpp:5:6: error: definition in block 61 does not dominate use in block 59 5 | void g(bool h) { | ^ for SSA_NAME: prephitmp_100 in statement: prephitmp_100 = PHI PHI argument prephitmp_100 for PHI node prephitmp_100 = PHI during GIMPLE pass: vect func.cpp:5:6: internal compiler error: verify_ssa failed 0x13368a2 verify_ssa(bool, bool) gcc/tree-ssa.c:1208 0x10228a5 execute_function_todo gcc/passes.c:1992 0x102357e execute_todo gcc/passes.c:2039 Reproducer: bool a; extern bool b[]; long c, d; int *f; void g(bool h) { for (short e = 0; e < c; e = 4) for (; d; d++) b[d] = a = f[d] ? c ? h : 0 : h; } GCC version: gcc version 11.0.0 (56638b9b1853666f575928f8baf17f70e4ed3517)
[Bug tree-optimization/95649] New: ICE during GIMPLE pass: cunroll
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95649 Bug ID: 95649 Summary: ICE during GIMPLE pass: cunroll Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$ g++ -O2 -c func.cpp during GIMPLE pass: cunroll func.cpp: In function ‘void test()’: func.cpp:4:6: internal compiler error: Segmentation fault 4 | void test() { | ^~~~ 0x1102483 crash_signal gcc/toplev.c:328 0x1b58f3b loop_containing_stmt gcc/tree-ssa-loop.h:76 0x1b58f3b chrec_contains_symbols_defined_in_loop gcc/tree-chrec.c:1009 0x1b59248 chrec_contains_symbols_defined_in_loop gcc/tree-chrec.c:1026 0x1b59248 chrec_contains_symbols_defined_in_loop gcc/tree-chrec.c:1026 0x1b59248 chrec_contains_symbols_defined_in_loop gcc/tree-chrec.c:1026 0x1b593cb chrec_contains_symbols_defined_in_loop(tree_node const*, unsigned int) gcc/tree-chrec.c:1039 0x11dfff3 compute_overall_effect_of_inner_loop(loop*, tree_node*) gcc/tree-scalar-evolution.c:473 0x11dfff3 compute_overall_effect_of_inner_loop(loop*, tree_node*) gcc/tree-scalar-evolution.c:447 0x11de08c analyze_scalar_evolution_1 gcc/tree-scalar-evolution.c:1960 0x11deb9d analyze_scalar_evolution(loop*, tree_node*) gcc/tree-scalar-evolution.c:2038 0x11df04f instantiate_scev_name gcc/tree-scalar-evolution.c:2335 0x11df04f instantiate_scev_r gcc/tree-scalar-evolution.c:2636 0x11df1ca instantiate_scev_binary gcc/tree-scalar-evolution.c:2466 0x11df1ca instantiate_scev_r gcc/tree-scalar-evolution.c:2649 0x11ded9e instantiate_scev_poly gcc/tree-scalar-evolution.c:2409 0x11ded9e instantiate_scev_r gcc/tree-scalar-evolution.c:2641 0x11dfde5 instantiate_scev(edge_def*, loop*, tree_node*) gcc/tree-scalar-evolution.c:2718 0x127743a instantiate_parameters gcc/tree-scalar-evolution.h:63 0x127743a idx_infer_loop_bounds gcc/tree-ssa-loop-niter.c:3612 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Reproducer: extern unsigned short var_5; extern int var_8, var_9; extern short arr_7[]; void test() { for (; 0 < (char)var_5;) for (int a(var_9 ? var_5 : 0); a < 3002972621U + 1291994699; a += 19499 - 19497) for (long b(var_8); b; b += 4) arr_7[a * b] = 0; } GCC version: 11.0.0 (87af4f40453a9c84363bde5d9a58466de7fbee2e)
[Bug tree-optimization/95487] New: ICE: verify_gimple failed (error: invalid vector types in nop conversion) with -O3 -march=skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95487 Bug ID: 95487 Summary: ICE: verify_gimple failed (error: invalid vector types in nop conversion) with -O3 -march=skylake-avx512 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$ g++ -O3 -march=skylake-avx512 -c func.cpp func.cpp: In function ‘void h()’: func.cpp:7:6: error: invalid vector types in nop conversion 7 | void h() { | ^ char vector(32) unsigned char stmp_117 = (char) stmp_116; func.cpp:7:6: error: invalid vector types in nop conversion char vector(32) unsigned char stmp_120 = (char) stmp_119; during GIMPLE pass: vect func.cpp:7:6: internal compiler error: verify_gimple failed 0x1141df1 verify_gimple_in_cfg(function*, bool) /gcc/tree-cfg.c:5461 0x10152af execute_function_todo /gcc/passes.c:1985 0x101608e execute_todo /gcc/passes.c:2039 Reproducer: int a; bool d; char e; extern short f[]; extern int g[]; short j; void h() { for (short b = j; b < 0; b += 2) { f[b] = 0; if (d) { for (char c = 0; c < a; c += 3) e = 0; g[b] = 0; } } } GCC version: 11.0.0 (4b68cb38ddca37a14a6f2f43de3a6d396ee1bc79) bug 92741 might be related
[Bug tree-optimization/95401] New: GCC produces incorrect instruction with -O3 for skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95401 Bug ID: 95401 Summary: GCC produces incorrect instruction with -O3 for skylake-avx512 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC produces incorrect instruction with -O3 for skylake-avx512 (also for icelake-server and tigerlake). Error: >$ g++ -O3 func.cpp driver.cpp -march=skylake-avx512 && sde -skx -- ./a.out SDE ERROR: TID: 0 executed instruction with an unaligned memory reference to address 0x404064 INSTR: 0x000401201: IFORM: VMOVDQA_MEMdq_XMMdq :: vmovdqa xmmword ptr [rcx*4+0x404060], xmm0 IMAGE: /home/vlivinsk/workspace/yarpgen/bugs/may-28/gcc-miscompile/reduce/a.out FUNCTION: _Z4testv FUNCTION ADDR: 0x000401120 Reproducer: driver.cpp int var_9 = 1693986256, var_14; int arr_16[11]; void test(); int main() { test(); } func.cpp extern int var_9; extern unsigned var_14; extern int arr_16[]; #include void test() { for (short a = 0; a < (short)var_9; a += 12140) for (short b = 0; b < 8; b++) if (std::max(var_14, 1U)) arr_16[a + b] = 0; } GCC version: 11.0.0 (5c715e6a2990cfb6c15acc1ee14219523534ec69)
[Bug tree-optimization/95396] New: GCC produces incorrect code with -O3 for loops
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95396 Bug ID: 95396 Summary: GCC produces incorrect code with -O3 for loops Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$ g++ -O0 small.cpp && ./a.out 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 0 0 0 >$ g++ -O3 small.cpp && ./a.out 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 42 0 0 0 Reproducer: >$ cat small.cpp #include unsigned short arr_26 [20]; signed char arr_25 [2000]; unsigned char b; int c(int d, int f) { return d > f ? d : f; } void test() { for (char e = c(b, 241) + 15; e < 17; e += 1) arr_26[e] = 42; } int main() { test(); for (size_t i_0 = 0; i_0 < 20; ++i_0) printf("%d ", arr_26 [i_0]); printf("\n"); } GCC version: 11.0.0 (1852a26b925970f64f8d31518ba732fe9c3ade23)
[Bug tree-optimization/95295] g++ produces incorrect code with -O3 for loops
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95295 --- Comment #6 from Vsevolod Livinskiy --- Thank you for such a quick fix! Sorry about duplicates, I saw different assert messages and thought that they were different bugs. I still can see ICE in hoist_memory_references (bug 95283) on trunk. I've attached the reproducer below. Please let me know if it is a different bug, and I'll create another bug report. Error: >$ g++ -c -O3 func.cpp during GIMPLE pass: lim func.cpp: In function ‘void test()’: func.cpp:5:6: internal compiler error: in hoist_memory_references, at tree-ssa-loop-im.c:2615 5 | void test() { | ^~~~ 0x82318c hoist_memory_references gcc_src/gcc/tree-ssa-loop-im.c:2615 0x82318c store_motion_loop gcc_src/gcc/tree-ssa-loop-im.c:2912 0x123853a do_store_motion gcc_src/gcc/tree-ssa-loop-im.c:2937 0x123853a tree_ssa_lim gcc_src/gcc/tree-ssa-loop-im.c:3156 0x123853a execute gcc_src/gcc/tree-ssa-loop-im.c:3206 Reproducer: extern short var_15, var_20; extern int var_18, var_21, var_23; extern bool arr_2[]; extern long arr_3[]; void test() { var_20 = 1; for (int a = 0; a < 12; a += 2) for (short b = 0; b < 8; b += 2) { arr_2[b] = var_21 = var_18 ? var_15 : 0; arr_3[b] = 8569; } var_23 = -1096835496; } GCC version: 11.0.0 (adad99eb906164af7d2b398ad7e430aebe3adeb4)
[Bug tree-optimization/95308] ICE: in maybe_canonicalize_mem_ref_addr with -O3 -march=skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95308 --- Comment #1 from Vsevolod Livinskiy --- bug 94216 might be related to this one
[Bug tree-optimization/95308] New: ICE: in maybe_canonicalize_mem_ref_addr with -O3 -march=skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95308 Bug ID: 95308 Summary: ICE: in maybe_canonicalize_mem_ref_addr with -O3 -march=skylake-avx512 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$ g++ -O3 -march=skylake-avx512 -c func.cpp during GIMPLE pass: forwprop func.cpp: In function ‘void i(char, long int (*)[100][100][100])’: func.cpp:5:6: internal compiler error: in maybe_canonicalize_mem_ref_addr, at gimple-fold.c:4912 5 | void i(char f, long g[][100][100][100]) { | ^ 0x76db2a maybe_canonicalize_mem_ref_addr gcc_src/gcc/gimple-fold.c:4912 0xdfdd97 fold_stmt_1 gcc_src/gcc/gimple-fold.c:5014 0x1226b41 execute gcc_src/gcc/tree-ssa-forwprop.c:3095 Reproducer: extern int a[][18]; extern short b[], c[]; extern char d[][18]; int e; void i(char f, long g[][100][100][100]) { for (int h = 0;; h += 2) for (char j = 0; j < 17; j++) { if (e ? f : 0) { a[h][j] = 5; for (int k = 0; k < 12; k += 4) for (short l = 0; l < 015; l += 2) b[k * 3 + l] = bool(g[2][j][k][l]); } else d[h][j] = 0; c[j] = 3; } } GCC version: 11.0.0 (a57aa11191617754c8d43b3eb6a2576e970a0668)
[Bug tree-optimization/95297] New: ICE: Segmentation fault
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95297 Bug ID: 95297 Summary: ICE: Segmentation fault Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >g++ -c func.c -O3 during GIMPLE pass: slp func.cpp: In function ‘void test()’: func.cpp:7:6: internal compiler error: Segmentation fault 7 | void test() { | ^~~~ 0x10f44e3 crash_signal gcc/gcc_src/gcc/toplev.c:328 0xde7f80 useless_type_conversion_p(tree_node*, tree_node*) gcc/gcc_src/gcc/gimple-expr.c:71 0x134427f types_compatible_p gcc/gcc_src/gcc/gimple-expr.h:67 0x134427f vect_maybe_update_slp_op_vectype(_slp_tree*, tree_node*) gcc/gcc_src/gcc/tree-vect-stmts.c:11854 0x135236f vect_maybe_update_slp_op_vectype(_slp_tree*, tree_node*) gcc/gcc_src/gcc/tree-vect-stmts.c:11851 0x135236f vectorizable_shift gcc/gcc_src/gcc/tree-vect-stmts.c:5777 0x13684c3 vect_analyze_stmt(vec_info*, _stmt_vec_info*, bool*, _slp_tree*, _slp_instance*, vec*) gcc/gcc_src/gcc/tree-vect-stmts.c:11086 0x139a5e9 vect_slp_analyze_node_operations_1 gcc/gcc_src/gcc/tree-vect-slp.c:2677 0x139a5e9 vect_slp_analyze_node_operations gcc/gcc_src/gcc/tree-vect-slp.c:2844 0x139a50b vect_slp_analyze_node_operations gcc/gcc_src/gcc/tree-vect-slp.c:2802 0x139b34b vect_slp_analyze_operations(vec_info*) gcc/gcc_src/gcc/tree-vect-slp.c:2898 0x139d443 vect_slp_analyze_bb_1 gcc/gcc_src/gcc/tree-vect-slp.c:3225 0x139d443 vect_slp_bb_region gcc/gcc_src/gcc/tree-vect-slp.c:3286 0x139d443 vect_slp_bb(basic_block_def*) gcc/gcc_src/gcc/tree-vect-slp.c:3421 0x139ebc7 execute gcc/gcc_src/gcc/tree-vectorizer.c:1320 Reproducer: #include extern bool var_10; extern int var_16; extern short var_17; extern long var_18; extern int arr_3[][13]; void test() { for (short a = 0; a < 010; a++) for (char b = 0; b < 012; b++) arr_3[a][b] = std::min(-var_10, 0) + 2147483647 >> var_10; var_16 = (bool)4; var_17 = 0; var_18 = -1594153176; } GCC version: 11.0.0 (a57aa11191617754c8d43b3eb6a2576e970a0668)
[Bug tree-optimization/95295] New: g++ produces incorrect code with -O3 for loops
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95295 Bug ID: 95295 Summary: g++ produces incorrect code with -O3 for loops Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$ g++ func.cpp driver.cpp -O0 && ./a.out 1 >$ g++ func.cpp driver.cpp -O3 && ./a.out 0 Reproducer: func.cpp extern int var_4, a; extern unsigned var_9; extern short arr_272[]; void test() { for (int b = 0; b < 9; b++) for (int c = 0; c < 9; c += 4) { arr_272[c] = var_9 ? var_4 : 0; a = 0; } } driver.cpp #include unsigned long long a; int var_4 = 1; short var_9 = 8; short arr_272[20]; void test(); int main() { test(); printf("%d\n", arr_272[4]); } GCC version: 11.0.0 (bcb63eb2cbd3caf212b9cf42d8c218c09dc6ff8b)
[Bug tree-optimization/95284] New: ICE: verify_gimple failed
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95284 Bug ID: 95284 Summary: ICE: verify_gimple failed Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: #include short a; unsigned long long c; char d; unsigned e; void f() { for (;;) for (char b = 0; b < 19; b += 2) a = std::min((1 ? d : 0) ? e : c, (unsigned long long)72252803048); } Error: >$ g++ -O3 func.cpp -c func.cpp: In function ‘void f()’: func.cpp:8:6: error: invalid ‘PHI’ argument 8 | void f() { | ^ {CLOBBER} _26 = PHI <72252803048(8), {CLOBBER}(5)> during GIMPLE pass: sink func.cpp:8:6: internal compiler error: verify_gimple failed 0x113fc71 verify_gimple_in_cfg(function*, bool) gcc_src/gcc/tree-cfg.c:5461 0x10132af execute_function_todo gcc_src/gcc/passes.c:1985 0x101408e execute_todo gcc_src/gcc/passes.c:2039 GCC version: 11.0.0 (bcb63eb2cbd3caf212b9cf42d8c218c09dc6ff8b)
[Bug tree-optimization/95283] New: ICE: in hoist_memory_references, at tree-ssa-loop-im.c:2607
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95283 Bug ID: 95283 Summary: ICE: in hoist_memory_references, at tree-ssa-loop-im.c:2607 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Reproducer: short c; bool d; unsigned e, f; char g, h; extern bool i[]; void j() { for (char a = 0; a < 100; a++) for (char b = 0; b < 20; b += 2) { if (e) d = f = 0; else g = i[8] = 0; h = c; } } Error: >$ g++ -O3 func.cpp -c during GIMPLE pass: lim func.cpp: In function ‘void j()’: func.cpp:6:6: internal compiler error: in hoist_memory_references, at tree-ssa-loop-im.c:2607 6 | void j() { | ^ 0x822f8a hoist_memory_references gcc_src/gcc/tree-ssa-loop-im.c:2607 0x822f8a store_motion_loop gcc_src/gcc/tree-ssa-loop-im.c:2904 0x12381da do_store_motion gcc_src/gcc/tree-ssa-loop-im.c:2929 0x12381da tree_ssa_lim gcc_src/gcc/tree-ssa-loop-im.c:3148 0x12381da execute gcc_src/gcc/tree-ssa-loop-im.c:3198 GCC version: 11.0.0 (bcb63eb2cbd3caf212b9cf42d8c218c09dc6ff8b)
[Bug tree-optimization/95281] New: ICE: in compute_live_loop_exits, at tree-ssa-loop-manip.c:247
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95281 Bug ID: 95281 Summary: ICE: in compute_live_loop_exits, at tree-ssa-loop-manip.c:247 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Error: >$g++ -O3 -c func.cpp during GIMPLE pass: lim func.cpp: In function ‘void c(bool, unsigned int*)’: func.cpp:5:6: internal compiler error: in compute_live_loop_exits, at tree-ssa-loop-manip.c:247 5 | void c(bool d, unsigned e[]) { | ^ 0x827f56 compute_live_loop_exits gcc_src/gcc/tree-ssa-loop-manip.c:247 0x827f56 add_exit_phis_var gcc_src/gcc/tree-ssa-loop-manip.c:334 0x827f56 add_exit_phis gcc_src/gcc/tree-ssa-loop-manip.c:356 0x827f56 rewrite_into_loop_closed_ssa_1(bitmap_head*, unsigned int, int, loop*) gcc_src/gcc/tree-ssa-loop-manip.c:678 0x827f56 rewrite_into_loop_closed_ssa_1(bitmap_head*, unsigned int, int, loop*) gcc_src/gcc/tree-ssa-loop-manip.c:631 0x1238f8b move_computations gcc_src/gcc/tree-ssa-loop-im.c:1309 0x1238f8b tree_ssa_lim gcc_src/gcc/tree-ssa-loop-im.c:3151 0x1238f8b execute gcc_src/gcc/tree-ssa-loop-im.c:3198 Reproducer: #include short a; extern short b[]; void c(bool d, unsigned e[]) { for (short f = 0; f < 20; f += 4) for (int g = 0; g < 23; g++) { a = std::max(e[f], (unsigned)d); b[g] = 5; } } GCC version: 11.0.0 (bcb63eb2cbd3caf212b9cf42d8c218c09dc6ff8b)
[Bug tree-optimization/95268] New: ICE: invalid ‘PHI’ argument
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95268 Bug ID: 95268 Summary: ICE: invalid ‘PHI’ argument Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC fails with "invalid ‘PHI’ argument" Error: >$ g++ -O3 func.cpp -w func.cpp: In function ‘void test()’: func.cpp:10:6: error: invalid ‘PHI’ argument 10 | void test() { | ^~~~ {CLOBBER} _98 = PHI <{CLOBBER}(5), _17(7)> during GIMPLE pass: sink func.cpp:10:6: internal compiler error: verify_gimple failed 0x113ea11 verify_gimple_in_cfg(function*, bool) gcc_src/gcc/tree-cfg.c:5461 0x101204f execute_function_todo gcc_src/gcc/passes.c:1985 0x1012e2e execute_todo gcc_src/gcc/passes.c:2039 Reproducer: #include extern short var_0, var_2, var_3, var_9, var_11, var_13, var_14, var_19, var_22, var_32, var_37, var_44, var_57, var_59, var_63, var_70; extern unsigned var_5; extern char var_6, var_12, var_18, var_38, var_39, var_43, var_55, var_64, arr_35; extern long var_7, var_8, var_10, var_15, var_25, var_56; extern int var_21, var_36, var_51, var_65, var_68, arr_7; extern bool var_46, var_58, var_67; void test() { var_12 = 0 >= 0; var_13 = arr_7; var_14 = (unsigned long)var_7 >> -564810131 + 564810189; var_15 = var_5; var_18 = -602739307623583391; var_19 = -~0; var_21 = var_10 >> var_8 - 17101301574577641170ULL; var_22 = var_5; var_25 = var_9; var_32 = std::max((unsigned)var_2, var_5); var_36 = 9557; var_37 = 394545925; var_38 = 0 >= 0; var_39 = var_5; var_43 = 0; var_44 = arr_35; var_46 = var_7; for (short a = 0; a < 9; a = 021) for (short b = 0; b < 024; b += 4) var_51 = std::min((long long)(var_2 ?: var_9), (long long)var_9); var_55 = var_0; var_56 = 3896150587; var_57 = var_11; var_58 = var_59 = var_11; var_63 = 73; var_64 = 10393232284806619711ULL; var_65 = var_3; var_67 = var_6; var_68 = var_70 = 0; } GCC version: 11.0.0 (149c8c7c27a17a2941d07e2f76b1e1c823e2fa80)
[Bug tree-optimization/95248] New: GCC produces incorrect code with -O3 for loops
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95248 Bug ID: 95248 Summary: GCC produces incorrect code with -O3 for loops Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC produces incorrect code with -O3 for loops Error: >$ gcc -O0 driver.cpp func.cpp && ./a.out 1 >$ gcc -O3 driver.cpp func.cpp && ./a.out 0 Reproducer: >$ cat driver.cpp #include int var_2 = -2013646301; int var_3 = -1126567434; unsigned int var_12 = 1; unsigned int var_19; unsigned int arr_25 [24] [21] [15] [17] [15] ; void test(); int main() { test(); printf("%u\n", var_19); } >$ cat func.cpp extern int var_2; extern int var_3; extern unsigned int var_12; extern unsigned int var_19; extern unsigned int arr_25 [24] [21] [15] [17] [15] ; void test() { for (int a = 0; a < 3; a = 42) for (int b = 0; b < 20; b++) for (int c = 0; c < 4; c = 4) for (int d = 0; d < 6; d += 4) for (int e = 0; e < 4; e += 2) { arr_25[a][b][c][d][e] = var_2 || var_3; var_19 = var_12; } } GCC version: gcc version 11.0.0 (ed63c387aa0bc1846082524455a6ff1fcec40f9d)
[Bug tree-optimization/94727] New: GCC produces incorrect code with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94727 Bug ID: 94727 Summary: GCC produces incorrect code with -O3 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC produces incorrect code with -O3. Reproducer: >$ cat func.cpp extern bool var_3; extern unsigned long long int var_11; extern unsigned char arr_41 [14] [14] [19] [16] [18] ; extern long long int arr_42 [14] [14] [19] [16] [18] ; void test() { for (int a = 0; a < 3; a++) for (char b = 0; b < 3; b = 4) for (int c = 0; c < 8; c++) for (short d = 0; d < 5; d += 4) for (char e = 0; e < 17; e++) arr_42[a][b][c][d][e] = (arr_41[a][b][c][d][e] < var_11) > var_3; } >$ cat driver.cpp #include bool var_3 = (bool)0; unsigned long long int var_11 = 14035841137156193017ULL; unsigned char arr_41 [14] [14] [19] [16] [18] ; long long int arr_42 [14] [14] [19] [16] [18] ; void test(); int main() { for (size_t i_0 = 0; i_0 < 14; ++i_0) for (size_t i_1 = 0; i_1 < 14; ++i_1) for (size_t i_2 = 0; i_2 < 19; ++i_2) for (size_t i_3 = 0; i_3 < 16; ++i_3) for (size_t i_4 = 0; i_4 < 18; ++i_4) arr_41 [i_0] [i_1] [i_2] [i_3] [i_4] = (unsigned char)226; for (size_t i_0 = 0; i_0 < 14; ++i_0) for (size_t i_1 = 0; i_1 < 14; ++i_1) for (size_t i_2 = 0; i_2 < 19; ++i_2) for (size_t i_3 = 0; i_3 < 16; ++i_3) for (size_t i_4 = 0; i_4 < 18; ++i_4) arr_42 [i_0] [i_1] [i_2] [i_3] [i_4] = -5577957210778461327LL; test(); printf("%lld\n", arr_42[0][0][0][0][0]); } Error: >$ g++ func.cpp driver.cpp -O0 && ./a.out 1 >$ g++ func.cpp driver.cpp -O3 && ./a.out 0 GCC version: 10.0.1 (87841658d4fa5174d1797ee0abc73b3b3f11cad4)
[Bug tree-optimization/91403] New: GCC fails with ICE.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91403 Bug ID: 91403 Summary: GCC fails with ICE. Product: gcc Version: tree-ssa Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC fails with an internal compiler error. Sometimes the compilation takes about 12 minutes before it fails. Originally the bug was reported in r91178. Reproducer: extern int a[][1240092]; int b; void c() { for (int d = 2; d <= 9; d++) for (int e = 32; e <= 41; e++) b += a[d][5]; } Error: >$ gcc -march=skylake-avx512 -c -O3 small.c gcc: internal compiler error: Segmentation fault signal terminated program cc1 GCC version: gcc version 10.0.0 (rev. 274155)
[Bug tree-optimization/91178] [9 Regression] Infinite recursion in split_constant_offset in slp after r260289
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91178 --- Comment #17 from Vsevolod Livinskiy --- (In reply to Serge Belyshev from comment #16) > (In reply to Vsevolod Livinskiy from comment #15) > > I don't know if it is the same error or not, but the reproducer looks > > similar. > > This one is different. It does not fail for me with -O3 > -march=skylake-avx512, just slow and consumes over 1G of memory. > > But with just "-O3" it blows up the stack during predictive commoning pass > via follow_ssa_edge tree-scalar-evolution.c:1350 --> follow_ssa_edge_in_rhs > tree-scalar-evolution.c:1135 --> follow_ssa_edge_binary > tree-scalar-evolution.c:947 --> follow_ssa_edge tree-scalar-evolution.c:1350 > recursion. > > Git bisect points at r256634. Thank you! I'll open a new bug to keep them separated.
[Bug tree-optimization/91178] [9 Regression] Infinite recursion in split_constant_offset in slp after r260289
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91178 --- Comment #15 from Vsevolod Livinskiy --- I don't know if it is the same error or not, but the reproducer looks similar. It takes about 11 minutes before GCC fails. Reproducer: extern int a[][1240092]; int b; void c() { for (int d = 2; d <= 9; d++) for (int e = 32; e <= 41; e++) b += a[d][5]; } Error: >$ gcc -march=skylake-avx512 -c -O3 small.c gcc: internal compiler error: Segmentation fault signal terminated program cc1 GCC version: gcc version 10.0.0 (rev. 274155)
[Bug tree-optimization/91293] New: Wrong code with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91293 Bug ID: 91293 Summary: Wrong code with -O3 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC produces wrong code with -O3 option. Reproducer: #include long long a; unsigned b, c; int d = 62; void e(long long *f, int p2) { *f = p2; } int main() { for (int g = 2; g <= d; g++) { c += 5 - g; b += g + 4; } e(&a, b); printf("%llu\n", a); } Error: >$ gcc -march=skylake-avx512 -O3 small.c ; ./a.out 18446744073709550508 >$ gcc -march=skylake-avx512 -O0 small.c ; ./a.out 2196 GCC version: 10.0.0 (rev. 273839)
[Bug tree-optimization/91178] [9 Regression] Infinite recursion in split_constant_offset in slp after r260289
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91178 --- Comment #8 from Vsevolod Livinskiy --- It looks like the fix doesn't handle all of the cases. I still can see similar bugs on the trunk. Reproducer: int a[100][70304]; int b[100]; void c() { for (int d = 2; d < 4; d++) for (int e = 2; e <= 50; e++) for (int f = 32; f <= 38; f++) b[d + f] -= a[e][5]; } Error" >$ gcc -O3 -march=skylake-avx512 repr.c gcc: internal compiler error: Segmentation fault signal terminated program cc1 GCC version 10.0.0 (revision: 273743)
[Bug tree-optimization/91240] New: Wrong code with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91240 Bug ID: 91240 Summary: Wrong code with -O3 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC produces wrong code with -O3. Reproducer: #include long long a; int b[96][76]; int c[81]; void d(long long *e, int p2) { *e ^= p2; } int main() { for (int f = 0; f < 80; ++f) for (int g = 0; g < 76; ++g) b[f][g] = c[f] = 9094; for (int f = 6; f <= 9; f++) for (int g = 6; g <= 75; g++) if (b[0][g]) c[f + 1] *= f + (unsigned)c[f]; printf("%d\n", c[8]); } Error: >$ gcc -O3 small.c ; ./a.out 1637288310 >$ gcc -O0 small.c ; ./a.out -2106497818 GCC version is 10.0.0 (Rev: 273743)
[Bug tree-optimization/91207] New: Wrong code with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91207 Bug ID: 91207 Summary: Wrong code with -O3 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC produces wrong code with -O3. Reproducer: #include long long a; int b[92][32]; unsigned int c, d; void e(long long *f, int p2) { *f = p2; } int main() { for (int i = 6; i <= 20; d = i++) for (int j = 6; j <= 91; j++) { for (int k = 16; k <= 31;k++) b[j][k] ^= 7; c *= d; } for (int i = 0; i < 21; ++i) for (int j = 0; j < 32; ++j) e(&a, b[i][j]); printf("%llu\n", a); } Error: >$ gcc -O0 repr.c ; ./a.out 7 >$ gcc -O3 repr.c ; ./a.out 0 GCC version is 10.0.0 (Revision: 273580)
[Bug tree-optimization/91204] New: ICE in expand_expr_real_2, at expr.c:9215 with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91204 Bug ID: 91204 Summary: ICE in expand_expr_real_2, at expr.c:9215 with -O3 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC fails with ICE in expand_expr_real_2, at expr.c:9215. Reproducer: int a, b; extern int c[]; void d() { for (int e = 6; e <= a; e++) c[e] &= b ^ c[e] ^ c[e - 2]; } Error: >$ gcc -c -O3 small.c during RTL pass: expand small.c: In function ‘d’: small.c:5:10: internal compiler error: in expand_expr_real_2, at expr.c:9215 5 | c[e] &= b ^ c[e] ^ c[e - 2]; | ^~ 0x8c9408 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) /gcc/expr.c:9215 0x8d0532 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /gcc/expr.c:9948 0x8dac5e expand_expr /gcc/expr.h:281 0x8dac5e expand_operands(tree_node*, tree_node*, rtx_def*, rtx_def**, rtx_def**, expand_modifier) /gcc/expr.c:7878 0x8c829d expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) /gcc/expr.c:9738 0x796a60 expand_gimple_stmt_1 /gcc/cfgexpand.c:3814 0x796a60 expand_gimple_stmt /gcc/cfgexpand.c:3875 0x79da4f expand_gimple_basic_block /gcc/cfgexpand.c:5915 0x7a027e execute /gcc/cfgexpand.c:6538 GCC version is 10.0.0 (rev. 273556)
[Bug tree-optimization/91178] New: GCC fails with internal compiler error.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91178 Bug ID: 91178 Summary: GCC fails with internal compiler error. Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC fails with an internal compiler error. Sometimes the compilation takes about 5 minutes before it fails. Everything works fine with -O2. Reproducer: int a; extern int f[10][91125]; int b[50]; void c() { for (int d = 6; d <= a; d++) for (int e = 16; e <= 24; e++) b[e] -= f[d][d]; } Error: >$ gcc -c -O3 small.c gcc: internal compiler error: Segmentation fault signal terminated program cc1 GCC version: gcc version 10.0.0 (revision: 273474)
[Bug tree-optimization/91145] New: ICE: in vect_build_slp_tree_2, at tree-vect-slp.c:1143 with -march=skylake-avx512 -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91145 Bug ID: 91145 Summary: ICE: in vect_build_slp_tree_2, at tree-vect-slp.c:1143 with -march=skylake-avx512 -O3 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC fails with ICE with -march=skylake-avx512 -O3 options. Reproducer: int a, c; unsigned b, e; extern unsigned d[100]; void f() { for (int g = 0; g < 70; g++) { b += d[g] - c; e -= g ^ a; } } Error: >$ gcc -march=skylake-avx512 -O3 -c small.c during GIMPLE pass: vect small.c: In function ‘f’: small.c:5:6: internal compiler error: in vect_build_slp_tree_2, at tree-vect-slp.c:1143 5 | void f() { | ^ 0xf13128 vect_build_slp_tree_2 /gcc/tree-vect-slp.c:1143 0xf0ffac vect_build_slp_tree /gcc/tree-vect-slp.c:1073 0xf119a3 vect_build_slp_tree_2 /gcc/tree-vect-slp.c:1218 0xf0ffac vect_build_slp_tree /gcc/tree-vect-slp.c:1073 0xf16744 vect_analyze_slp_instance /gcc/tree-vect-slp.c:1985 0xf18158 vect_analyze_slp(vec_info*, unsigned int) /gcc/tree-vect-slp.c:2212 0xf000ce vect_analyze_loop_2 /gcc/tree-vect-loop.c:1985 0xf000ce vect_analyze_loop(loop*, _loop_vec_info*, vec_info_shared*) /gcc/tree-vect-loop.c:2379 0xf1d847 try_vectorize_loop_1 /gcc/tree-vectorizer.c:886 0xf1e5c9 vectorize_loops() /gcc/tree-vectorizer.c:1114 GCC version: gcc version 10.0.0 (Rev: 273261)
[Bug tree-optimization/91137] New: Wrong code with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91137 Bug ID: 91137 Summary: Wrong code with -O3 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- GCC produces wrong code with –O3. Reproducer: #include long long a; unsigned b; int c[70]; int d[70][70]; int e; void f(long long *g, int p2) { *g = p2; } void fn2() { for (int j = 0; j < 70; j++) { for (int i = 0; i < 70; i++) { if (b) c[i] = 0; for (int l = 0; l < 70; l++) d[i][1] = d[l][i]; } for (int k = 0; k < 70; k++) e = c[0]; } } int main() { b = 5; for (int j = 0; j < 70; ++j) c[j] = 2075593088; fn2(); f(&a, e); printf("%lld\n", a); } Error: >$ gcc -O3 repr.c ; ./a.out 2075593088 >$ gcc -O0 repr.c ; ./a.out 0 GCC version: gcc version 10.0.0 (Rev: 273261) This error can also be reproduced with gcc version 7.3.1
[Bug tree-optimization/82192] gcc produces incorrect code with -O2 and bit-field
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82192 --- Comment #4 from Vsevolod Livinskiy --- (In reply to jos...@codesourcery.com from comment #3) > On Tue, 12 Sep 2017, vsevolod.livinskij at frtk dot ru wrote: > > > struct struct_t { > > unsigned int memb : 13; > > }; > > > > extern struct_t b; > > > printf("%llu\n", b.memb); > > unsigned int : 13 (promoted to int - I think C++ promotes > narrower-than-int bit-fields to int, though for C++ the bit-field width is > not considered part of the type) is not valid for printf %llu. You need > to explicitly cast to unsigned long long. printf("%llu\n", (unsigned long long int)b.memb) doesn't eliminate the error
[Bug tree-optimization/82192] gcc produces incorrect code with -O2 and bit-field
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82192 --- Comment #2 from Vsevolod Livinskiy --- (In reply to Andrew Pinski from comment #1) > Does -fsantize=undefined show anything? > > I am suspecting you have undefined behavior with respect to the shift. Test doesn't contain undefined behavior, and sanitizer verifies it. (7227976781724269559 | a & ~3739384568U) gives 7227976781724531703, and (7227976781724269559 | a & ~3739384568U) - 7227976781724531672 gives 31, so shift is OK.
[Bug tree-optimization/82192] New: gcc produces incorrect code with -O2 and bit-field
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82192 Bug ID: 82192 Summary: gcc produces incorrect code with -O2 and bit-field Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- gcc produces incorrect code with -O2 and higher and unsigned int : 13 bit-field >$ g++ -O2 driver.cpp func.cpp ; ./a.out 6930 >$ g++ -O0 driver.cpp func.cpp ; ./a.out 0 >$ cat init.h extern const unsigned long int a; struct struct_t { unsigned int memb : 13; }; extern struct_t b; >$ cat driver.cpp #include #include "init.h" const unsigned long int a = 10798855141994013410UL; struct_t b; extern void foo (); int main () { foo (); printf("%llu\n", b.memb); return 0; } >$ cat func.cpp #include "init.h" void foo() { b.memb = unsigned(a) >> (7227976781724269559 | a & ~3739384568U) - 7227976781724531672; } >$ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/gcc-dev/bin-trunk/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /gcc-dev/trunk/configure --prefix=/gcc-dev/bin-trunk --disable-bootstrap Thread model: posix gcc version 8.0.0 20170912 (Rev. 252003) (GCC)
[Bug tree-optimization/82073] internal compiler error: in pop_to_marker, at tree-ssa-scopedtables.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82073 --- Comment #2 from Vsevolod Livinskiy --- (In reply to Eric Gallager from comment #1) > Could you post the output of g++ -v so we have version and target info > please? Revision is 251589 >$ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /gcc-dev/bin-trunk --disable-bootstrap Thread model: posix gcc version 8.0.0 20170901 (experimental) (GCC)
[Bug tree-optimization/82073] New: internal compiler error: in pop_to_marker, at tree-ssa-scopedtables.c
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82073 Bug ID: 82073 Summary: internal compiler error: in pop_to_marker, at tree-ssa-scopedtables.c Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 42099 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42099&action=edit Reproducer. The testcase is huge and weird, but it seems to be key to this ICE. Also Creduce has failed to reduce it even further. >$ g++ -std=c++11 -w -c -O2 repr.cpp during GIMPLE pass: dom repr.cpp: In function ‘void foo()’: repr.cpp:176:6: internal compiler error: in pop_to_marker, at tree-ssa-scopedtables.c:71 void foo() { ^~~ 0x104bc3e avail_exprs_stack::pop_to_marker() /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree-ssa-scopedtables.c:71 0xf9cbb3 dom_opt_dom_walker::after_dom_children(basic_block_def*) /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree-ssa-dom.c:1379 0x15716e7 dom_walker::walk(basic_block_def*) /home/vsevolod/workspace/gcc-dev/trunk/gcc/domwalk.c:325 0xfa0dc8 execute /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree-ssa-dom.c:691 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.
[Bug tree-optimization/81987] New: ICE in verify_ssa with -O3 -march=skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81987 Bug ID: 81987 Summary: ICE in verify_ssa with -O3 -march=skylake-avx512 Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- g++ -O3 -march=skylake-avx512 fails with ICE in verify_ssa with error: definition in block 11 does not dominate use in block 2 There are several trackers with the same error message, but some of them fails only with -O2 -floop-nest-optimize option (69675, 79483), other were fixed (71252). So i don't know, if this bug is duplicate or not. >$ cat repr.cpp extern short var_1; extern const short var_3; extern unsigned long int var_9; extern short var_13; extern const unsigned long int var_15; extern const unsigned long int var_37; extern unsigned long int var_40; extern long long int var_47; extern short var_48; extern const short var_54; extern long long int var_79; extern long long int var_81; extern long long int var_94; extern long long int var_95; extern long long int var_701; extern unsigned long int var_786; extern short var_788; extern long long int var_844; struct struct_1 { short member_1_2 : 30; static long long int member_1_3; }; extern struct_1 struct_obj_6; extern struct_1 struct_obj_8; void foo() { int a = var_3 <= 602154393864UL; if (var_81 ? 0 : var_3 && var_9) ; else { var_94 = 0; if (var_3 && var_48 || var_13) { if (var_48) var_95 = 0; short b((236446151776511UL + var_3) * (2 ? var_13 : 0) || var_1); struct_obj_8.member_1_2 = b; if (var_15) { if (var_81) if (var_47) ; else if (var_40) var_701 = 0; } else { if (var_40) var_79 = 0; if (var_54) { if (var_37) var_786 = 0; else var_788 = 0; struct_obj_6.member_1_3 = (236446151776511UL + var_3) * (2 ? var_13 : 0); } } if ((236446151776511UL + var_3) * (2 ? var_13 : 0)) var_844 = 0; } } } Error: >g++ -O3 -march=skylake-avx512 -c repr.cpp repr.cpp: In function ‘void foo()’: repr.cpp:28:6: error: definition in block 11 does not dominate use in block 2 void foo() { ^~~ for SSA_NAME: _10 in statement: slsr_104 = _10 * 236446151776511; during GIMPLE pass: slsr repr.cpp:28:6: internal compiler error: verify_ssa failed 0x1095c1b verify_ssa(bool, bool) /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree-ssa.c:1188 0xd7ad1d execute_function_todo /home/vsevolod/workspace/gcc-dev/trunk/gcc/passes.c:1999 0xd7b619 execute_todo /home/vsevolod/workspace/gcc-dev/trunk/gcc/passes.c:2046 GCC version is 251301
[Bug c++/80630] gcc fails to compile constexpr with -O0/-O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80630 Vsevolod Livinskiy changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Vsevolod Livinskiy --- Missed out-of-line definition for A::debug_typeid: constexpr uint32_t A::debug_typeid;
[Bug c++/80630] New: gcc fails to compile constexpr with -O0/-O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80630 Bug ID: 80630 Summary: gcc fails to compile constexpr with -O0/-O1 Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 41318 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41318&action=edit Reproducer. gcc fails to compile constexpr at -O0 and -O2 with -std=c++11 and -std=c++14. Everything works fine with -std=c++17. Reproducer: >$ cat repr.cpp #include #include template void foo() { std::cout << T::debug_typeid << std::endl; std::make_pair(T::debug_typeid, T::debug_typeid); } struct A { static constexpr uint32_t debug_typeid = 1; }; int main () { foo(); } Error: >$ g++ -std=c++11 repr.cpp -O0 ; ./a.out /tmp/cckPqG1z.o: In function `void foo()': repr.cpp:(.text._Z3fooI1AEvv[_Z3fooI1AEvv]+0x21): undefined reference to `A::debug_typeid' repr.cpp:(.text._Z3fooI1AEvv[_Z3fooI1AEvv]+0x26): undefined reference to `A::debug_typeid' collect2: error: ld returned 1 exit status GCC revision:247564
[Bug tree-optimization/80620] New: gcc produces wrong code with -O3
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80620 Bug ID: 80620 Summary: gcc produces wrong code with -O3 Product: gcc Version: 7.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 41311 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41311&action=edit Reproducer. gcc produces wrong code with -O3. It fails on multiple architectures (knl, skylake-avx512 and others) Reproducer: >$ cat func.c extern const long int var_10; extern int var_43; extern int var_732; extern int var_743; extern int var_748; extern int var_999; extern unsigned long int var_751; void foo() { if (!var_10 - var_10) var_732 = var_43 = 0; else var_743 = 3UL * var_10 == 0; if (var_999 / var_10) var_748 = 0 < -var_10 + 500849970701012771 + (unsigned long)-var_10; else var_751 = 4081116982543369 & var_10; } >$ cat driver.c #include const long int var_10 = -465274079317386463L; int var_43 = 856872806; int var_732 = -1940894202; int var_743 = 1718449211; int var_748 = -392681565; unsigned long int var_751 = 13521452247506316486UL; int var_999 = -13194608; extern void foo (); int main () { foo (); printf("%lu\n", var_751); return 0; } Error: >$ gcc -O3 driver.c func.c ; ./a.out 17981469994392165153 >$ gcc -O0 driver.c func.c ; ./a.out 2818598057803777 GCC revision: 247564
[Bug middle-end/80362] New: gcc miscompiles arithmetic with signed char
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80362 Bug ID: 80362 Summary: gcc miscompiles arithmetic with signed char Product: gcc Version: 7.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 41156 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41156&action=edit Reproducer. GCC produces wrong code for a bunch of different architectures. Reproducer: #include signed char var_0 = 0; signed char var_1 = 128; void foo () { //(signed char)(-(signed char)(128)) / 3 should be equal to (signed char)(-var_1) / 3; var_0 = (signed char)(-var_1) / 3; } int main () { foo (); printf("%d\n", var_0); return 0; } Error: >$ g++ -O0 -march=broadwell repr.c ; ./a.out -42 >$ g++ -O3 -march=broadwell repr.c ; ./a.out 42 GCC version: rev. 246778 Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/home/vsevolod/workspace/gcc-dev/bin-trunk/libexec/gcc/x86_64-pc-linux-gnu/7.0.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/vsevolod/workspace/gcc-dev/trunk/configure --prefix=/home/vsevolod/workspace/gcc-dev/bin-trunk --disable-bootstrap Thread model: posix gcc version 7.0.1 20170407 (experimental) (GCC)
[Bug c/80341] New: gcc miscompiles division of signed char
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80341 Bug ID: 80341 Summary: gcc miscompiles division of signed char Product: gcc Version: 7.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 41140 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41140&action=edit Reproducer. GCC generates incorrect code. Correct result is 90. Reproducer: >$ cat foo.c extern const signed char var_25; extern signed char var_465; void foo() { var_465 = (unsigned short) var_25 / -55; } >$ cat main.c #include extern void foo (); const signed char var_25 = -84; signed char var_465 = 0; int main () { foo (); printf("%d\n", (int) var_465); return 0; } Run: >$ gcc main.c foo.c ; ./a.out 1 GCC version: Rev. 246681 >$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/home/vsevolod/workspace/gcc-dev/bin-trunk/libexec/gcc/x86_64-pc-linux-gnu/7.0.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/vsevolod/workspace/gcc-dev/trunk/configure --prefix=/home/vsevolod/workspace/gcc-dev/bin-trunk --disable-bootstrap Thread model: posix gcc version 7.0.1 20170404 (experimental) (GCC)
[Bug tree-optimization/80072] New: ICE in gimple_build_assign_1 with -O3 -march=broadwell/skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80072 Bug ID: 80072 Summary: ICE in gimple_build_assign_1 with -O3 -march=broadwell/skylake-avx512 Product: gcc Version: 7.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 40988 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40988&action=edit Reproducer. GCC fails with ICE with -O3 -march=broadwell/skylake-avx512 options. Error: >$ g++ -O3 -c -w -march=broadwell repr.cpp internal compiler error: in gimple_build_assign_1, at gimple.c:422 void foo () { ^~~ 0xabf24b gimple_build_assign_1 /home/vsevolod/workspace/gcc-dev/trunk/gcc/gimple.c:422 0xabf24b gimple_build_assign(tree_node*, tree_code, tree_node*, tree_node*) /home/vsevolod/workspace/gcc-dev/trunk/gcc/gimple.c:453 0xf1af6d rewrite_expr_tree /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree-ssa-reassoc.c:4242 0xf1abb8 rewrite_expr_tree /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree-ssa-reassoc.c:4287 (.) GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/home/vsevolod/workspace/gcc-dev/bin-trunk/libexec/gcc/x86_64-pc-linux-gnu/7.0.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/vsevolod/workspace/gcc-dev/trunk/configure --prefix=/home/vsevolod/workspace/gcc-dev/bin-trunk Thread model: posix gcc version 7.0.1 20170315 (experimental) (GCC) Test case is huge and creduce has failed to reduce it further.
[Bug sanitizer/80067] New: ICE in fold_comparison with -fsanitize=undefined
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80067 Bug ID: 80067 Summary: ICE in fold_comparison with -fsanitize=undefined Product: gcc Version: 7.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: sanitizer Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org, jakub at gcc dot gnu.org, kcc at gcc dot gnu.org Target Milestone: --- Created attachment 40984 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40984&action=edit Reproducer. GCC crashes with with -fsanitize=undefined option. Reproducer: extern signed char a; void foo () { 0 << ((647 > a) - 1); } Error: >$ g++ -fsanitize=undefined -c repr.cpp repr.cpp: In function ‘void foo()’: repr.cpp:3:24: internal compiler error: tree check: expected class ‘expression’, have ‘constant’ (integer_cst) in fold_comparison, at fold-const.c:8707 0 << ((647 > a) - 1); ^ 0x10100b7 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree.c:9867 0xa94317 expr_check(tree_node*, char const*, int, char const*) /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree.h:3233 0xa94317 fold_comparison (...) GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/home/vsevolod/workspace/gcc-dev/bin-trunk/libexec/gcc/x86_64-pc-linux-gnu/7.0.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/vsevolod/workspace/gcc-dev/trunk/configure --prefix=/home/vsevolod/workspace/gcc-dev/bin-trunk Thread model: posix gcc version 7.0.1 20170315 (experimental) (GCC)
[Bug tree-optimization/80054] New: ICE in verify_ssa with -O3 -march=broadwell/skylake-avx512
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80054 Bug ID: 80054 Summary: ICE in verify_ssa with -O3 -march=broadwell/skylake-avx512 Product: gcc Version: 7.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 40978 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40978&action=edit Reproducer. ICE with -O3 -march=broadwell (and skylake-avx512). Everything works fine with other optimization levels. Error: >$ g++ -O3 -march=broadwell -c repr.cpp repr.cpp: In function ‘void foo()’: repr.cpp:17:6: error: definition in block 7 does not dominate use in block 6 void foo() { ^~~ for SSA_NAME: _133 in statement: slsr_142 = PHI <_133(6), _133(16)> PHI argument _133 for PHI node slsr_142 = PHI <_133(6), _133(16)> repr.cpp:17:6: internal compiler error: verify_ssa failed 0xf84ad3 verify_ssa(bool, bool) /home/vsevolod/workspace/gcc-dev/trunk/gcc/tree-ssa.c:1184 0xc98ea7 execute_function_todo /home/vsevolod/workspace/gcc-dev/trunk/gcc/passes.c:1973 0xc99e0b execute_todo /home/vsevolod/workspace/gcc-dev/trunk/gcc/passes.c:2016 Reproducer: extern short var_2; extern short var_4; extern const bool var_32; extern short var_36; extern const bool var_37; extern bool var_46; extern unsigned int var_47; extern short var_49; extern unsigned int var_56; extern unsigned int var_62; extern unsigned int var_65; extern bool var_831; extern unsigned int var_843; extern short var_846; extern short var_889; void foo() { if (var_36 * var_37) var_831 = var_56 = 0; else var_65 = 0; if (var_46) var_843 = 0; var_846 = 0; if ((var_4 == 0) >> (var_32 | -(var_37 < var_46 || var_36)) + 8) var_49 = 2032651381 * bool(var_2 * var_37); else { var_62 = 0; var_47 = (var_46 || var_36) * (var_2 * var_37); } var_889 = bool(var_2 * var_37); } GCC version: gcc version 7.0.1 (today's trunk)
[Bug target/78132] New: GCC produces invalid instruction (kmovd and kmovq) for KNL.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78132 Bug ID: 78132 Summary: GCC produces invalid instruction (kmovd and kmovq) for KNL. Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 39909 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39909&action=edit Reproducer. GCC produces invalid instruction (kmovd and kmovq) for KNL. The reproducer for kmovq was attached, but I there is exist similar error for kmovd. Reproducer: unsigned short c; char a, d, f, b; short e; long g; int main() { g = c; f = c & e; d = c & a | e; if (a) b = c; } GCC version: >$ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/home/vlivinsk/workspace/gcc-dev/bin-trunk/libexec/gcc/x86_64-pc-linux-gnu/7.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/vlivinsk/workspace/gcc-dev/trunk/configure --prefix=/home/vlivinsk/workspace/gcc-dev/bin-trunk Thread model: posix gcc version 7.0.0 20161026 (experimental) (GCC) Error: >$ g++ -O3 -march=knl small.cpp >$ sde -knl -- ./a.out TID 0 SDE-ERROR: Executed instruction not valid for specified chip (KNL): 0x400436: kmovq k0, rax Image: a.out+0x436 (in multi-region image, region# 0) Function: main Instruction bytes are: c4 e1 fb 92 c0
[Bug target/70941] New: [5/6/7 Regression] Test miscompiled with -O2.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70941 Bug ID: 70941 Summary: [5/6/7 Regression] Test miscompiled with -O2. Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 38409 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38409&action=edit Reproducer. Test case produces incorrect result with -O2 option. Output: > g++ -O0 repr.cpp; ./a.out -109 > g++ -O3 repr.cpp; ./a.out -110 GCC version: Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/bin/../libexec/gcc/x86_64-pc-linux-gnu/7.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/gnutester/stability/svn/trunk/configure --prefix=/export/users/gnutester/stability/work/trunk/64/install --enable-bootstrap=no --enable-languages=c,c++,fortran Thread model: posix gcc version 7.0.0 20160430 (experimental) (GCC) Testcase: #include #include char a = 0, b = 0, c = 0, d = 0; int main() { a = -(b - 405418259) - ((d && c) ^ 2040097152); if (a != -109) abort(); }
[Bug target/70733] Wrong code with nested structs and bit field.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70733 --- Comment #1 from Vsevolod Livinskiy --- (In reply to Vsevolod Livinskiy from comment #0) > Created attachment 38314 [details] > Reproducer. > > Test case produces incorrect result. > > Output: > > clang++ repr.cpp; ./a.out > -4 > > g++ repr.cpp; ./a.out > 137438953468 > > GCC version: > > g++ -v > Using built-in specs. > COLLECT_GCC=g++ > COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64- > pc-linux-gnu/7.0.0/lto-wrapper > Target: x86_64-pc-linux-gnu > Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure > --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib > --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl > --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto > --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin > --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin > --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin > --prefix=/export/users/vlivinsk/gcc-trunk/bin > Thread model: posix > gcc version 7.0.0 20160418 (experimental) (Revision=235129) > > Test: > #include > > struct A { > unsigned long member : 37; > }; > > struct B { > A member; > } b; > > long a; > > int main() { > b.member.member = 4; > a = -b.member.member; > if (a != 4) > abort(); > } Typo. Should be if (a != -4) abort();
[Bug target/70733] New: Wrong code with nested structs and bit field.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70733 Bug ID: 70733 Summary: Wrong code with nested structs and bit field. Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 38314 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38314&action=edit Reproducer. Test case produces incorrect result. Output: > clang++ repr.cpp; ./a.out -4 > g++ repr.cpp; ./a.out 137438953468 GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/7.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 7.0.0 20160418 (experimental) (Revision=235129) Test: #include struct A { unsigned long member : 37; }; struct B { A member; } b; long a; int main() { b.member.member = 4; a = -b.member.member; if (a != 4) abort(); }
[Bug target/70542] [6 Regression] Wrong code with -O3 -mavx2.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70542 Vsevolod Livinskiy changed: What|Removed |Added Attachment #38187|0 |1 is obsolete|| --- Comment #1 from Vsevolod Livinskiy --- Created attachment 38188 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38188&action=edit Correct reproducer. I've mixed up reproducers.
[Bug target/70542] New: [6 Regression] Wrong code with -O3 -mavx2.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70542 Bug ID: 70542 Summary: [6 Regression] Wrong code with -O3 -mavx2. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 38187 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38187&action=edit Reproducer. Test case produces incorrect result with -O3 -mavx2 (and -march=knl and -march=skylake-avx512. Everything works fine with gcc version 4.9.4 20160401 (prerelease) (Revision=234686) and gcc version 5.3.1 20160401 (Revision=234686). Output: g++ -O2 -mavx2 repr.cpp; ./a.out 1540 > g++ -O3 -mavx2 repr.cpp; ./a.out 1204 GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160404 (experimental) (Revision=234705) Test: #include int a[520]; short b[482]; short c[480]; int d[963]; short e[320]; int main() { for (int i = 0; i < 520; ++i) a[i] = -636544305; for (int i = 0; i < 386; ++i) b[i] = -31804; for (long i = 1; i <= 112; ++i) { c[i] = b[i] >> ((a[i] & 1587842570) - 1510214139); if (a[i]) d[i] = i; e[i] = 7 << ((2312631697 - b[i]) - 2312663500); } unsigned long long g = 0; for (int i = 0; i < 111; ++i) { g = e[i] + g; } if (g != 1540) abort(); }
[Bug target/70450] New: [6 Regression] Wrong code with -O0 and -O1.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70450 Bug ID: 70450 Summary: [6 Regression] Wrong code with -O0 and -O1. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 38127 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38127&action=edit Reproducer. Test case produces incorrect result with -O0 and -O1 on all x86 arch. Everything works fine with gcc version 4.9.4 20160325 (prerelease) (Revision=234483) and gcc version 5.3.1 20160325 (Revision=234483). Output: > g++ repr.cpp -o out -O2 -mavx2; ./out 18446744073709551584 > g++ repr.cpp -o out -O0 -mavx2; ./out 68719476704 GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160330 (experimental) (Revision=234545) Testcase: #include unsigned long int a = 2UL; int b = 2; unsigned long int c = 2UL; void foo () { c = 2 * ((2 * a) * (2 * (-b))); } int main () { foo(); if (c != 18446744073709551584UL) abort(); return 0; }
[Bug target/70429] New: Wrong code with -O1.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70429 Bug ID: 70429 Summary: Wrong code with -O1. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 38111 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38111&action=edit Reproducer. Test case produces incorrect result with -O1 and all x86 arch. Everything works fine with -O0 option. Output: > g++ -O0 repr.cpp -mavx2; ./a.out 4119272 > g++ -O1 repr.cpp -mavx2; ./a.out 272554728 GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160327 (experimental) (Revision=234496) Test: #include #include bool a = 1; int b = 612010083; void foo () { b = (int)((~7710322944595239647L + 9223372036854775807L) >> a) >> 4; } int main () { foo (); if (b != 4119272) abort(); return 0; }
[Bug target/70354] New: [6 Regression] Wrong code with -O3 -march=broadwell and -march=skylake-avx512.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70354 Bug ID: 70354 Summary: [6 Regression] Wrong code with -O3 -march=broadwell and -march=skylake-avx512. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 38055 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38055&action=edit Reproducer. Test case produces incorrect result with -O3 -march=broadwell. Also it fails with -march=skylake-avx512, but with different result. Everything works fine with gcc version 4.9.4 20160318 (prerelease) (Revision=234347) and gcc version 5.3.1 20160318 (Revision=234347). Output: > g++ -std=c++11 -O0 -march=broadwell -o out repr.cpp; ./out 6060289626626340782 > g++ -std=c++11 -O3 -march=broadwell -o out repr.cpp; ./out 7868099280905707034 > g++ -std=c++11 -O3 -march=skylake-avx512 -o out repr.cpp; sde -skx -- ./out 2358867323763884526 GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160319 (experimental) (Revision=234350) Test (unfortunately, I failed to reduce it further): #include void hash(unsigned long long int &seed, unsigned long long int const &v) { seed ^= v + 0x9e3779b9 + (seed<<6) + (seed>>2); } unsigned long long int a [1000]; long int b [1000]; long int c [1000]; unsigned long int d [1000]; unsigned long int e [1000]; unsigned long long int f [1000]; long int g [1000]; long int h [1000]; void init () { for (int i = 0; i < 1000; ++i) { a [i] = 14694295297531861425ULL; b [i] = -1725558902283030715L; c [i] = 4402992416302558097L; d [i] = 2890788459207692227UL; e [i] = 6297173129107286501UL; f [i] = 13865724171235650855ULL; g [i] = 982871027473857427L; h [i] = 8193845517487445944L; } } void foo () { for (int i = 449; i < 768; i = ((i) + (3))) { d [i] = h [i] << (unsigned long int)b [i] * e [i]) << (-a [i] - 3752448776177690134ULL)) - 8214565720323784703UL) - 1UL); e [i] = (bool)(f [i] + (unsigned long long int)g [i]); g [i] = c [i]; } } unsigned long long int checksum () { unsigned long long int seed = 0ULL; for (int i = 0; i < 1000; ++i) { hash(seed, d [i]); hash(seed, e [i]); hash(seed, f [i]); hash(seed, g [i]); hash(seed, h [i]); } return seed; } int main () { init (); foo (); std::cout << checksum () << std::endl; return 0; }
[Bug target/70333] New: [5/6 Regression] Test miscompiled with -O0.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70333 Bug ID: 70333 Summary: [5/6 Regression] Test miscompiled with -O0. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 38042 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38042&action=edit Reproducer. Test case produces incorrect result with -O0. It also fails with gcc version 5.3.1 20160318 (Revision=234347) and works fine with gcc version 4.9.4 20160318 (prerelease) (Revision=234347) GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160319 (experimental) (Revision=234350) Test: #include signed char a = -33; signed char b = -60; signed char c = 70; long int d = 8591990532774389055L; void foo () { signed char e = ((unsigned long int)a < (unsigned long int)8) == (a > c); d = ((2UL * b) * (e * 13)) * (32 << 24); } int main () { foo (); if (d != -837518622720) abort(); return 0; }
[Bug c++/70252] New: ICE in vect_get_vec_def_for_stmt_copy with -O3 -march=skylake-avx512.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70252 Bug ID: 70252 Summary: ICE in vect_get_vec_def_for_stmt_copy with -O3 -march=skylake-avx512. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 37986 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37986&action=edit Reproducer. Testcase produces ICE with -O3 -march=skylake-avx512. Everything works fine with -O2. Error: > g++ -O3 -march=skylake-avx512 -S repr.cpp repr.cpp: In function ‘void foo()’: repr.cpp:7:6: internal compiler error: in vect_get_vec_def_for_stmt_copy, at tree-vect-stmts.c:1490 void foo () { ^~~ 0xc50433 vect_get_vec_def_for_stmt_copy(vect_def_type, tree_node*) ../.././gcc/tree-vect-stmts.c:1490 0xc55e8c vectorizable_condition(gimple*, gimple_stmt_iterator*, gimple**, tree_node*, int, _slp_tree*) ../.././gcc/tree-vect-stmts.c:7640 0xc65c26 vect_transform_stmt(gimple*, gimple_stmt_iterator*, bool*, _slp_tree*, _slp_instance*) ../.././gcc/tree-vect-stmts.c:8212 0xc6960a vect_transform_loop(_loop_vec_info*) ../.././gcc/tree-vect-loop.c:6885 0xc843bc vectorize_loops() ../.././gcc/tree-vectorizer.c:554 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. GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160315 (experimental) (Revision=234226) Test: extern unsigned char a [150]; extern unsigned char b [150]; extern unsigned char c [150]; extern unsigned char d [150]; extern unsigned char e [150]; void foo () { for (int i = 92; i <= 141; i += 2) { int tmp = (d [i] && b [i]) <= (a [i] > c [i]); e [i] = tmp >> b [i]; } }
[Bug c++/70251] New: Wrong code with -O3 -march=skylake-avx512.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70251 Bug ID: 70251 Summary: Wrong code with -O3 -march=skylake-avx512. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 37985 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37985&action=edit Reproducer. Test case produces incorrect result with -O3 -march=skylake-avx512. It gives different result for every launch. Everything works fine with -O2 option. Output: > g++ repr.cpp -o out -O3 -march=skylake-avx512; sde -skx -- ./out 12033857864019976279 > g++ repr.cpp -o out -O2 -march=skylake-avx512; sde -skx -- ./out 5785906989299578598 GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160315 (experimental) (Revision=234226) Test: #include void hash(unsigned long long int &seed, unsigned long long int const &v) { seed ^= v + 0x9e3779b9 + (seed<<6) + (seed>>2); } unsigned int a [100]; signed char b [100]; signed char c [100]; void init () { for (int i = 0; i < 100; ++i) { a [i] = 1000L; b [i] = 10; c [i] = 5; } } void foo () { for (int i = 0; i < 100; ++i) b [i] = (!b [i] ^ (a [i] >= b [i])) + c [i]; } unsigned long long int checksum () { unsigned long long int seed = 0ULL; for (int i = 0; i < 100; ++i) hash(seed, b [i]); return seed; } int main () { init (); foo (); std::cout << checksum () << std::endl; return 0; }
[Bug c++/70222] New: Test miscompiled with -O1
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70222 Bug ID: 70222 Summary: Test miscompiled with -O1 Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 37954 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37954&action=edit Reproducer. Test case produces incorrect result starting with -O1 optimization level. Test case fails with -march=nehalem, haswell, knl and skylake-avx512 options and with gcc version 4.8.5 (Revision=226194), gcc version 4.9.4 20160311 (prerelease) (Revision=234148) and gcc version 5.3.1 20160311 (Revision=234148). Output: > g++ repr.cpp -o out -O1 -march=haswell; ./out -262143 > g++ repr.cpp -o out -O0 -march=haswell; ./out -1 GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160314 (experimental) (Revision=234175)
[Bug c++/70153] New: [6 Regression] ICE on valid C++ code
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70153 Bug ID: 70153 Summary: [6 Regression] ICE on valid C++ code Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 37903 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37903&action=edit Reproducer. Testcase produces ICE with -O0. Everything works fine with gcc version 4.9.4 (Revision=233979) and gcc version 5.3.1 (Revision=233979). Tested with -march=core-avx2, -march=corei7-avx and -march=knl. Error: > g++ -O0 repr.cpp -S g++: internal compiler error: Segmentation fault (program cc1plus) Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/vlivinsk/gcc-trunk/gcc/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --enable-languages=c,c++,lto --with-gmp=/export/users/vlivinsk/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/export/users/vlivinsk/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/export/users/vlivinsk/gcc-trunk/mpc-1.0.3/bin --prefix=/export/users/vlivinsk/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160309 (experimental) (Revision=234075)
[Bug c++/70026] New: [6 Regression] ICE in expand_expr_real_2 with -O1 -ftree-vectorize
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70026 Bug ID: 70026 Summary: [6 Regression] ICE in expand_expr_real_2 with -O1 -ftree-vectorize Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 37830 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37830&action=edit Reproducer. Testcase produces ICE with -O1 -ftree-vectorize. Everything works fine with gcc version 4.9.4 (Revision=233763) and gcc version 5.3.1 (Revision=233763). Tested with -march=core-avx2, -march=corei7-avx and -march=knl. Error: > g++ repr.cpp -o out -O1 -ftree-vectorize -std=c++11 -march=core-avx2 repr.cpp: In function ‘void foo()’: repr.cpp:29:6: internal compiler error: in expand_expr_real_2, at expr.c:9376 void foo () { ^~~ 0x867298 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) ../../gcc/expr.c:9376 0x85758a expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) ../../gcc/expr.c:9577 0x9fe024 expand_normal ../../gcc/expr.h:262 0x9fe024 expand_vec_cond_mask_expr(tree_node*, tree_node*, tree_node*, tree_node*, rtx_def*) ../../gcc/optabs.c:5563 0x9fe3a4 expand_vec_cond_expr(tree_node*, tree_node*, tree_node*, tree_node*, rtx_def*) ../../gcc/optabs.c:5607 0x864809 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) ../../gcc/expr.c:9358 0x78194e expand_gimple_stmt_1 ../../gcc/cfgexpand.c:3653 0x78194e expand_gimple_stmt ../../gcc/cfgexpand.c:3714 0x782d85 expand_gimple_basic_block ../../gcc/cfgexpand.c:5720 0x787c96 execute ../../gcc/cfgexpand.c:6335 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. GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --with-pkgversion=Revision=233809 --enable-languages=c,c++,lto --with-gmp=/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/gcc-trunk/mpc-1.0.3/bin --prefix=/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160229 (experimental) (Revision=233809)
[Bug c++/70021] New: Test miscompiled with -O3 option for -march=core-avx2.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70021 Bug ID: 70021 Summary: Test miscompiled with -O3 option for -march=core-avx2. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 37826 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37826&action=edit Reproducer. Test case produces incorrect result with -O3 option for -march=core-avx2. Everything works fine with other march (-march=corei7-avx and -march=knl). Also gcc version 4.9.4 (Revision=233763) and gcc version 5.3.1 (Revision=233763) generate correct code. Output: > g++ small.cpp -o out -O3 -std=c++11 -march=core-avx2; ./out 13370567410841507191 > g++ small.cpp -o out -O2 -std=c++11 -march=core-avx2; ./out 16372995556503316667 GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/gcc-trunk/bin/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --with-pkgversion=Revision=233809 --enable-languages=c,c++,lto --with-gmp=/gcc-trunk/gmp-6.1.0/bin --with-mpfr=/gcc-trunk/mpfr-3.1.3/bin --with-mpc=/gcc-trunk/mpc-1.0.3/bin --prefix=/gcc-trunk/bin Thread model: posix gcc version 6.0.0 20160229 (experimental) (Revision=233809)
[Bug tree-optimization/69820] [6 Regression] Test miscompiled with -O3 option
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69820 --- Comment #4 from Vsevolod Livinskiy --- Test case also cause internal compiler error when it is compiled for knl. > g++ -march=knl -O3 repr.cpp repr.cpp: In function ‘void foo()’: repr.cpp:23:45: internal compiler error: in ix86_expand_sse_cmp, at config/i386/i386.c:22702 out_1 [i] = in_1 [i] * (out_4 [i] * (bool)out_4 [i]); ^~~ 0xd0461e ix86_expand_sse_cmp /export/users/gnutester/stability/svn/trunk/gcc/config/i386/i386.c:22702 0xd37344 ix86_expand_int_vcond(rtx_def**) /export/users/gnutester/stability/svn/trunk/gcc/config/i386/i386.c:23398 0xee89d9 gen_vconduv32hiv32hi(rtx_def*, rtx_def*, rtx_def*, rtx_def*, rtx_def*, rtx_def*) /export/users/gnutester/stability/svn/trunk/gcc/config/i386/sse.md:11065 0x9fdf58 maybe_expand_insn(insn_code, unsigned int, expand_operand*) /export/users/gnutester/stability/svn/trunk/gcc/optabs.c:7015 0x9fdf58 expand_insn(insn_code, unsigned int, expand_operand*) /export/users/gnutester/stability/svn/trunk/gcc/optabs.c:7046 0x9fe700 expand_vec_cond_expr(tree_node*, tree_node*, tree_node*, tree_node*, rtx_def*) /export/users/gnutester/stability/svn/trunk/gcc/optabs.c:5622 0x863bc9 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) /export/users/gnutester/stability/svn/trunk/gcc/expr.c:9343 0x78035e expand_gimple_stmt_1 /export/users/gnutester/stability/svn/trunk/gcc/cfgexpand.c:3641 0x78035e expand_gimple_stmt /export/users/gnutester/stability/svn/trunk/gcc/cfgexpand.c:3702 0x7816ff expand_gimple_basic_block /export/users/gnutester/stability/svn/trunk/gcc/cfgexpand.c:5708 0x786606 execute /export/users/gnutester/stability/svn/trunk/gcc/cfgexpand.c:6323
[Bug c++/69820] Test was miss compiled with -O3 option.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69820 --- Comment #1 from Vsevolod Livinskiy --- Created attachment 37690 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37690&action=edit Preprocessed testcase.
[Bug c++/69820] New: Test was miss compiled with -O3 option.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69820 Bug ID: 69820 Summary: Test was miss compiled with -O3 option. Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- Created attachment 37689 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37689&action=edit Reproducer. Test case produces incorrect result with -O3 option. Everything works fine with gcc version 5.3.1 20160212 (Revision=233387) and gcc version 4.9.4 20160212 (prerelease) (Revision=233387). Output: > g++ -march=core-avx2 -O3 repr.cpp ; ./a.out 7540928331148314342 > g++ -march=core-avx2 -O2 repr.cpp ; ./a.out 18084857435860378664 GCC version: > g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/export/users/vlivinsk/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /export/users/gnutester/stability/svn/trunk/configure --with-arch=corei7 --with-cpu=corei7 --enable-clocale=gnu --with-system-zlib --enable-shared --with-demangler-in-ld --enable-cloog-backend=isl --with-fpmath=sse --enable-checking=release --with-pkgversion=Revision=233012 --prefix=/export/users/gnutester/stability/work/trunk/64/install --enable-languages=c,c++,fortran,java,lto Thread model: posix gcc version 6.0.0 20160130 (experimental) (Revision=233012)