https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120440
--- Comment #20 from Eric Botcazou <ebotcazou at gcc dot gnu.org> ---
> Looking at the dumps:
>
> --- a/a-except.adb.006t.original
> +++ b/a-except.adb.006t.original
> @@ -782,7 +782,7 @@ void
> ada.exceptions.exception_propagation.gnat_gcc_exception_cleanup (system__ex
> struct system__exceptions__machine__gnat_gcc_exception * {ref-all} copy
> = excep;
> if (copy != 0B)
> {
> - .gnat_free (copy);
> + .gnat_free (*((void * *) copy + 18446744073709551608));
> copy = 0B;
> }
> else
>
> ?!
I agree that this looks frightening at first sight. ;-) This comes from the
realignment business in ada/gcc-interface/utils2.cc:maybe_wrap_{malloc,free}.
What happens is that -march=x86-64-v3 bumps the BIGGEST_ALIGNMENT setting of
the i386 back-end wrt -march=x86-64-v2; now the malloc side is still compiled
with -march=x86-64-v2 whereas the free side is compiled with -march=x86-64-v3,
hence the discrepancy. So this is a latent Ada build issue exposed by the
change.
Thanks for the detailed investigation!