On 09/07/18 08:51, Bernd Edlinger wrote: > On 09/07/18 00:26, Jeff Law wrote: >> On 09/06/2018 04:16 PM, Jeff Law wrote: >>> On 09/06/2018 04:01 PM, Jeff Law wrote: >>>> On 09/06/2018 11:12 AM, Bernd Edlinger wrote: >>>> >>>>>> >>>>> >>>>> Ah, thanks a lot. >>>>> >>>>> Okay, this is the status of the STRING-CST semantic-v2 patches: >>>>> >>>>> [PATCH] Check the STRING_CSTs in varasm.c >>>>> https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01569.html >>>>> => Unfortunately I forgot to change the Title to [PATCHv2] or so. >>>>> Should I send a ping for this one? >>>>> >>>>> [PATCHv2] Handle overlength strings in the C FE >>>>> https://gcc.gnu.org/ml/gcc-patches/2018-08/msg01566.html >>>>> => Should I send a ping for this one? >>>> No need to ping. I've got it here. What's odd is that it's regressing >>>> 87053 . >>> Which is probably a sign that we've got an incorrect test for NUL >>> termination somewhere. > > It may be a sign that we should first fix the low level functions > before the high level stuff. > >> I think I've found the issue. I've got more testing to do, but looks >> like a thinko on my part. >> > > Ah, I forgot, the regression on pr87053 and fortran.dg/pr45636.f90 > is fixed by this patch: > > [PATCH] Adjust c_getstr/c_strlen to new STRING_CST semantic > https://gcc.gnu.org/ml/gcc-patches/2018-08/msg02013.html > > This is a new regression since the patch was initially posted. >
Well, actually both patches seem to have a circular dependency. If you want we can break this dependency by adding this to the c_getstr patch: --- gcc/fold-const.c 2018-09-07 14:22:50.047964775 +0200 +++ gcc/fold-const.c 2018-09-07 15:06:46.656989904 +0200 @@ -14611,6 +14611,10 @@ c_getstr (tree src, unsigned HOST_WIDE_I unsigned HOST_WIDE_INT string_length = TREE_STRING_LENGTH (src); unsigned HOST_WIDE_INT string_size = tree_to_uhwi (mem_size); + /* Ideally this would turn into a gcc_checking_assert over time. */ + if (string_length > string_size) + return NULL; + const char *string = TREE_STRING_POINTER (src); if (string_length == 0 This should allow it to work with current semantics as well. Bernd.