As discussed earlier, removing the <union> brings happiness to older g++'s.
Committed as obvious, per your previous comment.
commit 5d215dbbe1c37aaf98307cb71d250222fb802114 Author: Aldy Hernandez <al...@redhat.com> Date: Tue Dec 18 09:21:28 2012 -0600 PR other/54324 * tree-ssa-coalesce.c (struct ssa_name_var_hash): Remove "union" from template parameter. diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c index ce04fdf..47eba97 100644 --- a/gcc/tree-ssa-coalesce.c +++ b/gcc/tree-ssa-coalesce.c @@ -1259,7 +1259,7 @@ coalesce_partitions (var_map map, ssa_conflicts_p graph, coalesce_list_p cl, /* Hashtable support for storing SSA names hashed by their SSA_NAME_VAR. */ -struct ssa_name_var_hash : typed_noop_remove <union tree_node> +struct ssa_name_var_hash : typed_noop_remove <tree_node> { typedef union tree_node value_type; typedef union tree_node compare_type;