[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-04-20 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 Eric Gallager changed: What|Removed |Added CC||egallager at gcc dot gnu.org --- Comment

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-02-22 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 Jakub Jelinek changed: What|Removed |Added Target Milestone|8.3 |8.4 --- Comment #19 from Jakub Jelinek

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-16 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #18 from Marc Glisse --- (In reply to Jakub Jelinek from comment #17) > Without the #c11 patch (+ removal of the !INTEGRAL_TYPE_P special case from > the above committed change + fixing up ptrs_compare_unequal, or something > equivale

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-16 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #17 from Jakub Jelinek --- Without the #c11 patch (+ removal of the !INTEGRAL_TYPE_P special case from the above committed change + fixing up ptrs_compare_unequal, or something equivalent like the VRP change) I'm afraid there isn't mu

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-15 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #16 from Jakub Jelinek --- Author: jakub Date: Tue Jan 15 08:11:00 2019 New Revision: 267931 URL: https://gcc.gnu.org/viewcvs?rev=267931&root=gcc&view=rev Log: PR tree-optimization/88775 * match.pd (cmp (convert1?@2 a

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #15 from Jakub Jelinek --- Created attachment 45411 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45411&action=edit gcc9-pr88775-2.patch The following incremental patch (untested except for this testcase and comparisons_pointe

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #14 from Jakub Jelinek --- Of course only for equality comparisons, for non-equality the code is ok as is.

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #13 from Jakub Jelinek --- Seems it is the: /* When the addresses are not directly of decls compare base and offset. This implements some remaining parts of fold_comparison address comparisons but still no complete part of it.

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #12 from Jakub Jelinek --- Unfortunately the #c11 patch breaks the 20_util/function_objects/comparisons_pointer.cc testcase (wonder if your VRP patch would break it too), where the testcase does exactly what has been discussed on IRC:

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #11 from Jakub Jelinek --- Created attachment 45405 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45405&action=edit gcc9-pr88775.patch Full patch.

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #10 from Jakub Jelinek --- I get pretty much the same thing with: --- gcc/match.pd.jj 2019-01-07 17:59:24.100931144 +0100 +++ gcc/match.pd2019-01-10 14:45:31.870509916 +0100 @@ -1660,6 +1660,19 @@ (define_operator_list CON

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #9 from Richard Biener --- Created attachment 45404 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45404&action=edit VRP patch This makes VRP register asserts for the pointer variants. This doesn't help until after ifcombine b

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #8 from Jakub Jelinek --- "hello" string literal surely can be followed by anything else, but don't we consider it UB? int foo (void) { int a = 0; for (int i = 0; i < 32; i++) a += "hello"[i]; return a; } warning: iteration

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #7 from Richard Biener --- So after the patch we have __x.5_4 = (long unsigned int) "hello"; __y.6_5 = (long unsigned int) _3; if (__x.5_4 != __y.6_5) goto ; [75.00%] else goto ; [25.00%] [local count: 805306369]:

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #6 from Jakub Jelinek --- Author: jakub Date: Thu Jan 10 10:56:56 2019 New Revision: 267800 URL: https://gcc.gnu.org/viewcvs?rev=267800&root=gcc&view=rev Log: PR tree-optimization/88775 * include/bits/stl_function.h (

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #5 from Richard Biener --- Created attachment 45401 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45401&action=edit VN patch Turns f() into just [local count: 1073741824]: _3 = &MEM[(struct basic_string *)s_2(D)].D.18989

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed|

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #3 from Richard Biener --- So the if (__x.7_6 < __y.8_7) goto ; [50.00%] else goto ; [50.00%] [local count: 38463891]: if (__x.7_6 > __y.8_7) goto ; [50.00%] else goto ; [50.00%] fails to merge to != beca

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 Richard Biener changed: What|Removed |Added Priority|P3 |P2 Target Milestone|---

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-10 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 --- Comment #2 from Jonathan Wakely --- Probably not. I don't think sanitizers flag the unspecified comparisons, so we could just always do the uintptr_t comparisons for C++98/11. The patch looks good to me.

[Bug tree-optimization/88775] [8/9 Regression] Optimize std::string assignment

2019-01-09 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88775 Jakub Jelinek changed: What|Removed |Added CC||jakub at gcc dot gnu.org --- Comment #1