When calling an access to a subprogram taking an unconstrained discriminated record as parameter, we fail to pass the extra constrained actual parameter, which would lead to spurious or missed discriminant checks. At the same time we noticed that GNAT sometimes generates trees of the form: (Field1 => 1, Field2 => 2).Field1 we now recognize these in Sem_Eval and rewrite the tree as simply the value given for the field (1 in the example above). Tested on x86_64-pc-linux-gnu, committed on trunk gcc/ada/ * exp_ch6.adb: Fix typo in comment. * sem_ch3.adb (Access_Subprogram_Declaration): Add missing call to Create_Extra_Formals. Remove obsolete bootstrap check. * sem_eval.adb (Eval_Selected_Component): Simplify a selected_component on an aggregate.