From: David Malcolm Date: Fri, 12 Feb 2016 18:37:35 +0000 (+0000) Subject: PR driver/69779: fix bogus cleanup code used by libgccjit affecting s390x X-Git-Tag: basepoints/gcc-7~974 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8dccd19b3be7d3b94c6d3e0cbc7674d12314e909;p=thirdparty%2Fgcc.git PR driver/69779: fix bogus cleanup code used by libgccjit affecting s390x gcc/ChangeLog: PR driver/69779 * gcc.c (driver::finalize): Fix cleanup of "specs". From-SVN: r233385 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 729034caff4b..e783da7aadf2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-02-12 David Malcolm + + PR driver/69779 + * gcc.c (driver::finalize): Fix cleanup of "specs". + 2016-02-12 David Malcolm PR driver/69265 diff --git a/gcc/gcc.c b/gcc/gcc.c index 99fa5e386a5a..eaa465322701 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -9954,8 +9954,20 @@ driver::finalize () multilib_os_dir = 0; multiarch_dir = 0; - XDELETEVEC (specs); - specs = 0; + /* Free any specs dynamically-allocated by set_spec. + These will be at the head of the list, before the + statically-allocated ones. */ + if (specs) + { + while (specs != static_specs) + { + spec_list *next = specs->next; + free (const_cast (specs->name)); + XDELETE (specs); + specs = next; + } + specs = 0; + } for (unsigned i = 0; i < ARRAY_SIZE (static_specs); i++) { spec_list *sl = &static_specs[i];