This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch match.pd c c++]: Ignore results of 'shorten_compare' and move missing patterns in match.pd


On 09/08/2015 05:17 AM, Kai Tietz wrote:
Hi,

This patch is the first part of obsoleting 'shorten_compare' function
for folding.
It adjusts the uses of 'shorten_compare' to ignore folding returned by
it, and adds
missing pattterns to match.pd to allow full bootstrap of C/C++ without
regressions.
Due we are using 'shorten_compare' for some diagnostic we can't simply
remove it.  So if this patch gets approved, the next step will be to
rename the function to something like 'check_compare', and adjust its
arguments and inner logic to reflect that we don't modify
arguments/expression anymore within that function.

Bootstrap just show 2 regressions within gcc.dg testsuite due patterns
matched are folded more early by forward-propagation.  I adjusted
them, and added them to patch, too.

I did regression-testing for x86_64-unknown-linux-gnu.

ChangeLog

2015-09-08  Kai Tietz  <ktietz@redhat.com>

     * match.pd: Add missing patterns from shorten_compare.
     * c/c-typeck.c (build_binary_op): Discard foldings of shorten_compare.
     * cp/typeck.c (cp_build_binary_op): Likewise.

2015-09-08  Kai Tietz  <ktietz@redhat.com>

     * gcc.dg/tree-ssa/vrp23.c: Adjust testcase to reflect that
     pattern is matching now already within forward-propagation pass.
     * gcc.dg/tree-ssa/vrp24.c: Likewise.
So for the new patterns, I would have expected testcases to ensure they're getting used.

The fact that we're not regressing with the front-end specific shortening disabled like this is probably more of an artifact of lack of testing of this feature than anything.

In *theory* one ought to be able to look at the dumps or .s files before after this patch for a blob of tests and see that nothing significant has changed. Unfortunately, so much changes that it's hard to evaluate if this patch is a step forward or a step back.

I wonder if we'd do better to first add new match.pd patterns, one at a time, with tests, and evaluating them along the way by looking at the dumps or .s files across many systems. Then when we think we've got the right set, then look at what happens to those dumps/.s files if we make the changes so that shorten_compare really just emits warnings.

My worry is that we get part way through the conversion and end up with the match.pd patterns without actually getting shorten_compare cleaned up and turned into just a warning generator.

jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]