aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2016-05-23 13:45:13 +0200
committerMartin Jambor <jamborm@gcc.gnu.org>2016-05-23 13:45:13 +0200
commita50575432b41b3bc3b0a14cb2e6e53881941a99f (patch)
treef960a48373fb98e3c858fff7a8c978dc5d1c6c7e /gcc
parente569db5fb5fece9f9a3ee09e3dc7c58f0db36e40 (diff)
downloadgcc-a50575432b41b3bc3b0a14cb2e6e53881941a99f.zip
gcc-a50575432b41b3bc3b0a14cb2e6e53881941a99f.tar.gz
gcc-a50575432b41b3bc3b0a14cb2e6e53881941a99f.tar.bz2
[hsa] Avoid segfault in hsa switch expansion
2016-05-23 Martin Jambor <mjambor@suse.cz> * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Create an empty default block if a PHI node in the original one would be resized. libgomp/ * testsuite/libgomp.hsa.c/switch-sbr-2.c: New test. From-SVN: r236585
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/hsa-gen.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 56ccb0e..4218dab 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-05-23 Martin Jambor <mjambor@suse.cz>
+
+ * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Create an empty
+ default block if a PHI node in the original one would be resized.
+
2016-05-23 Venkataramanan Kumar <venkataramanan.kumar@amd.com>
PR tree-optimization/58135
diff --git a/gcc/hsa-gen.c b/gcc/hsa-gen.c
index 697d599..cf7d434 100644
--- a/gcc/hsa-gen.c
+++ b/gcc/hsa-gen.c
@@ -3482,6 +3482,12 @@ gen_hsa_insns_for_switch_stmt (gswitch *s, hsa_bb *hbb)
basic_block default_label_bb = label_to_block_fn (func,
CASE_LABEL (default_label));
+ if (!gimple_seq_empty_p (phi_nodes (default_label_bb)))
+ {
+ default_label_bb = split_edge (find_edge (e->dest, default_label_bb));
+ hsa_init_new_bb (default_label_bb);
+ }
+
make_edge (e->src, default_label_bb, EDGE_FALSE_VALUE);
hsa_cfun->m_modified_cfg = true;