Commit 9caad63a by Richard Henderson Committed by Richard Henderson

except.c (remove_unreachable_regions): Look thru CALL_PLACEHOLDER.

        * except.c (remove_unreachable_regions): Look thru CALL_PLACEHOLDER.
	* g++.dg/opt/eh1.C: New.

From-SVN: r79350
parent 03ca1672
2004-03-11 Richard Henderson <rth@redhat.com>
PR middle-end/14477
* except.c (remove_unreachable_regions): Look thru CALL_PLACEHOLDER.
2004-03-11 Ulrich Weigand <uweigand@de.ibm.com>
PR target/14262
......
......@@ -1048,7 +1048,18 @@ remove_unreachable_regions (rtx insns)
}
for (insn = insns; insn; insn = NEXT_INSN (insn))
reachable[uid_region_num[INSN_UID (insn)]] = true;
{
reachable[uid_region_num[INSN_UID (insn)]] = true;
if (GET_CODE (insn) == CALL_INSN
&& GET_CODE (PATTERN (insn)) == CALL_PLACEHOLDER)
for (i = 0; i < 3; i++)
{
rtx sub = XEXP (PATTERN (insn), i);
for (; sub ; sub = NEXT_INSN (sub))
reachable[uid_region_num[INSN_UID (sub)]] = true;
}
}
for (i = cfun->eh->last_region_number; i > 0; --i)
{
......
// PR middle-end/14477
// { dg-do compile }
// { dg-options "-O2 -fno-default-inline" }
struct A
{
A();
};
struct B
{
B(const A*);
};
struct C
{
B b;
C(int) : b(new A) {}
};
C c(0);
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