Commit 3df45f17 by Jakub Jelinek Committed by Jakub Jelinek

re PR rtl-optimization/88018 (ICE in insert_insn_on_edge at cfgrtl.c:1952 since r255066)

	PR rtl-optimization/88018
	* cfgrtl.c (fixup_abnormal_edges): Guard moving insns to fallthru edge
	on the presence of fallthru edge, rather than if it is a USE or not.

	* g++.dg/tsan/pr88018.C: New test.

From-SVN: r266174
parent ef0519fd
2018-11-15 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/88018
* cfgrtl.c (fixup_abnormal_edges): Guard moving insns to fallthru edge
on the presence of fallthru edge, rather than if it is a USE or not.
2018-11-15 Richard Biener <rguenther@suse.de>
PR middle-end/87917
......@@ -3332,8 +3332,15 @@ fixup_abnormal_edges (void)
If it's placed after a trapping call (i.e. that
call is the last insn anyway), we have no fallthru
edge. Simply delete this use and don't try to insert
on the non-existent edge. */
if (GET_CODE (PATTERN (insn)) != USE)
on the non-existent edge.
Similarly, sometimes a call that can throw is
followed in the source with __builtin_unreachable (),
meaning that there is UB if the call returns rather
than throws. If there weren't any instructions
following such calls before, supposedly even the ones
we've deleted aren't significant and can be
removed. */
if (e)
{
/* We're not deleting it, we're moving it. */
insn->set_undeleted ();
......
2018-11-15 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/88018
* g++.dg/tsan/pr88018.C: New test.
2018-11-15 Richard Biener <rguenther@suse.de>
PR middle-end/87917
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment