The LTO bootstrap of the Ada compiler is currently plagued by at least three different problems. The attached patch is for the easy one: it prevents fake variables whose type contains a placeholder from being created, which doesn't work in LTO mode because you cannot instantiate the PLACEHOLDER_EXPRs. IIUC this is only a slight pessimization.
Bootstrapped/regtested on x86_64-suse-linux, OK for mainline? 2012-01-22 Eric Botcazou <ebotca...@adacore.com> * tree-ssa-structalias.c (intra_create_variable_infos): Do not create fake variables for restrict-qualified pointers whose pointed-to type contains a placeholder. -- Eric Botcazou
Index: tree-ssa-structalias.c =================================================================== --- tree-ssa-structalias.c (revision 183348) +++ tree-ssa-structalias.c (working copy) @@ -5664,7 +5664,8 @@ intra_create_variable_infos (void) Treat restrict qualified references the same. */ if (TYPE_RESTRICT (TREE_TYPE (t)) && ((DECL_BY_REFERENCE (t) && POINTER_TYPE_P (TREE_TYPE (t))) - || TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE)) + || TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE) + && !type_contains_placeholder_p (TREE_TYPE (TREE_TYPE (t)))) { struct constraint_expr lhsc, rhsc; varinfo_t vi;