Skip to content
Snippets Groups Projects
Commit b2b20b27 authored by Andrew Pinski's avatar Andrew Pinski
Browse files

split-path: Improve ifcvt heurstic for split path [PR112402]


This simplifies the heurstic for split path to see if the join
bb is a ifcvt candidate.
For the predecessors bbs need either to be empty or only have one
statement in them which could be a decent ifcvt candidate.
The previous heurstics would miss that:
```
if (a) goto B else goto C;
B:  goto C;
C:
c = PHI<d,e>
```

Would be a decent ifcvt candidate. And would also miss:
```
if (a) goto B else goto C;
B: d = f + 1;  goto C;
C:
c = PHI<d,e>
```

Also since currently the max number of cmovs being able to produced is 3, we
should only assume `<= 3` phis can be ifcvt candidates.

The testcase changes for split-path-6.c is that lookharder function
is a true ifcvt case where we would get cmov as expected; it looks like it
was not a candidate when the heurstic was added but became one later on.
pr88797.C is now rejected via it being an ifcvt candidate rather than being about
DCE/const prop.

The rest of the testsuite changes are just slight change in the dump,
removing the "*diamnond" part as it was removed from the print.

Bootstrapped and tested on x86_64.

	PR tree-optimization/112402

gcc/ChangeLog:

	* gimple-ssa-split-paths.cc (poor_ifcvt_pred): New function.
	(is_feasible_trace): Remove old heurstics for ifcvt cases.
	For num_stmts <=1 for both pred check poor_ifcvt_pred on both
	pred.

gcc/testsuite/ChangeLog:

	* gcc.dg/tree-ssa/split-path-11.c: Update scan.
	* gcc.dg/tree-ssa/split-path-2.c: Update scan.
	* gcc.dg/tree-ssa/split-path-5.c: Update scan.
	* gcc.dg/tree-ssa/split-path-6.c: Update scan.
	* g++.dg/tree-ssa/pr88797.C: Update scan.
	* gcc.dg/tree-ssa/split-path-13.c: New test.

Signed-off-by: default avatarAndrew Pinski <quic_apinski@quicinc.com>
parent 77e17558
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment