mirror of git://gcc.gnu.org/git/gcc.git
Do not merge BBs with a different EH landing pads (PR
PR tree-optimization/77943 * g++.dg/tree-ssa/pr77943.C: New test. PR tree-optimization/77943 * tree-ssa-tail-merge.c (merge_stmts_p): Do not merge BBs with a different EH landing pads. From-SVN: r241090
This commit is contained in:
parent
3e0c9334e9
commit
2794767063
|
|
@ -1,3 +1,9 @@
|
||||||
|
2016-10-13 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
|
PR tree-optimization/77943
|
||||||
|
* tree-ssa-tail-merge.c (merge_stmts_p): Do not merge BBs with
|
||||||
|
a different EH landing pads.
|
||||||
|
|
||||||
2016-10-13 Jakub Jelinek <jakub@redhat.com>
|
2016-10-13 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR target/77957
|
PR target/77957
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-10-13 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
|
PR tree-optimization/77943
|
||||||
|
* g++.dg/tree-ssa/pr77943.C: New test.
|
||||||
|
|
||||||
2016-10-13 Andre Vehreschild <vehre@gcc.gnu.org>
|
2016-10-13 Andre Vehreschild <vehre@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/72832
|
PR fortran/72832
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* { dg-do run } */
|
||||||
|
/* { dg-options "-O2 -std=c++11" } */
|
||||||
|
|
||||||
|
void thrower[[gnu::noinline]]() {
|
||||||
|
throw 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void fatal() noexcept {thrower();}
|
||||||
|
inline void notFatal() {thrower();}
|
||||||
|
|
||||||
|
void func(bool callFatal) {
|
||||||
|
if (callFatal) {
|
||||||
|
fatal();
|
||||||
|
} else {
|
||||||
|
notFatal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, const char* argv[]) {
|
||||||
|
try {
|
||||||
|
bool callFatal = argc > 1;
|
||||||
|
func(callFatal);
|
||||||
|
} catch (...) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -204,6 +204,7 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#include "params.h"
|
#include "params.h"
|
||||||
#include "tree-ssa-sccvn.h"
|
#include "tree-ssa-sccvn.h"
|
||||||
#include "cfgloop.h"
|
#include "cfgloop.h"
|
||||||
|
#include "tree-eh.h"
|
||||||
|
|
||||||
/* Describes a group of bbs with the same successors. The successor bbs are
|
/* Describes a group of bbs with the same successors. The successor bbs are
|
||||||
cached in succs, and the successor edge flags are cached in succ_flags.
|
cached in succs, and the successor edge flags are cached in succ_flags.
|
||||||
|
|
@ -1222,6 +1223,10 @@ merge_stmts_p (gimple *stmt1, gimple *stmt2)
|
||||||
if (is_tm_ending (stmt1))
|
if (is_tm_ending (stmt1))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* Verify EH landing pads. */
|
||||||
|
if (lookup_stmt_eh_lp_fn (cfun, stmt1) != lookup_stmt_eh_lp_fn (cfun, stmt2))
|
||||||
|
return false;
|
||||||
|
|
||||||
if (is_gimple_call (stmt1)
|
if (is_gimple_call (stmt1)
|
||||||
&& gimple_call_internal_p (stmt1))
|
&& gimple_call_internal_p (stmt1))
|
||||||
switch (gimple_call_internal_fn (stmt1))
|
switch (gimple_call_internal_fn (stmt1))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue