+static ir_node *get_case_value(ir_node *switchn, long pn)
+{
+ ir_graph *irg = get_irn_irg(switchn);
+ const ir_switch_table *table = get_Switch_table(switchn);
+ size_t n_entries = ir_switch_table_get_n_entries(table);
+ ir_tarval *val = NULL;
+ size_t e;
+ for (e = 0; e < n_entries; ++e) {
+ const ir_switch_table_entry *entry
+ = ir_switch_table_get_entry_const(table, e);
+ if (entry->pn != pn)
+ continue;
+ /* multiple matching entries gets too complicated for a single
+ * Confirm */
+ if (val != NULL)
+ return NULL;
+ /* case ranges are too complicated too */
+ if (entry->min != entry->max)
+ return NULL;
+ val = entry->min;
+ }
+ assert(val != NULL);
+ return new_r_Const(irg, val);
+}
+