On 1/10/19 6:44 AM, Richard Biener wrote: > > I am testing the following patch teaching VRP predicate analysis about > > __x.5_4 = (long unsigned int) "hello"; > __y.6_5 = (long unsigned int) _3; > if (__x.5_4 != __y.6_5) > > so that we know sth about the relation of the converted entities. > This appearantly (didn't back out other stuff) helps PR88775 > after Jakubs changes to libstdc++ (before his changes a related > VN patch helped which meanwhile shows miscompiling > 20_util/function_objects/comparisons_pointer.cc...). > > I now see DOM performing all required optimization thanks to it > using the EVRP machinery. > > Bootstrap & regtest running on x86_64-unknown-linux-gnu. > > OK for trunk? > > Any idea how we can have a reliable testcase for the std::string > optimization? > > Thanks, > Richard. > > From 78a345845651565daac295f8dfbfc64cf5e8ccf3 Mon Sep 17 00:00:00 2001 > From: Richard Guenther <rguent...@suse.de> > Date: Thu, 10 Jan 2019 14:34:22 +0100 > Subject: [PATCH] fix-pr88775-2 > > 2019-01-10 Richard Biener <rguent...@suse.de> > > PR tree-optimization/88775 > * tree-vrp.c (register_edge_assert_for_2): Register asserts > from (T) a CMP (T) b. Seems reasonable to me. It looks like a slight generalization of code I've seen elsewhere, but can't find at the moment.
Jeff