+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
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;
+2016-05-23 Martin Jambor <mjambor@suse.cz>
+
+ * testsuite/libgomp.hsa.c/switch-sbr-2.c: New test.
+
2016-05-17 Chung-Lin Tang <cltang@codesourcery.com>
* oacc-init.c (acc_init): Remove !cached_base_dev condition on call
--- /dev/null
+/* { dg-additional-options "-fno-tree-switch-conversion" } */
+
+#pragma omp declare target
+int
+foo (unsigned a)
+{
+ switch (a)
+ {
+ case 1 ... 5:
+ return 1;
+ case 9 ... 11:
+ return a + 3;
+ case 12 ... 13:
+ return a + 3;
+ default:
+ return 44;
+ }
+}
+#pragma omp end declare target
+
+#define s 100
+
+void __attribute__((noinline, noclone))
+verify(int *a)
+{
+ if (a[0] != 44)
+ __builtin_abort ();
+
+ for (int i = 1; i <= 5; i++)
+ if (a[i] != 1)
+ __builtin_abort ();
+
+ for (int i = 6; i <= 8; i++)
+ if (a[i] != 44)
+ __builtin_abort ();
+
+ for (int i = 9; i <= 13; i++)
+ if (a[i] != i + 3)
+ __builtin_abort ();
+
+ for (int i = 14; i < s; i++)
+ if (a[i] != 44)
+ __builtin_abort ();
+}
+
+int main(int argc)
+{
+ int array[s];
+#pragma omp target
+ {
+ for (int i = 0; i < s; i++)
+ {
+ int v = foo (i);
+ array[i] = v;
+ }
+ }
+ verify (array);
+ return 0;
+}