Hi Jakub, > On Fri, Apr 11, 2025 at 10:50:25AM +0200, Rainer Orth wrote: >> 2025-04-08 Rainer Orth <r...@cebitec.uni-bielefeld.de> >> >> gcc/cobol: >> PR cobol/119217 >> * dts.h (csub_match): Initialize rm_so, rm_eo fields explicitly. >> > >> # HG changeset patch >> # Parent 6f227ddea0046a0164509bdb8069e96184304054 >> cobol: Initialize regmatch_t portably [PR119217] >> >> diff --git a/gcc/cobol/dts.h b/gcc/cobol/dts.h >> --- a/gcc/cobol/dts.h >> +++ b/gcc/cobol/dts.h >> @@ -33,7 +33,8 @@ namespace dts { >> : input(input) >> , first(NULL), second(NULL), matched(false) >> { >> - static regmatch_t empty = { -1, -1 }; >> + static regmatch_t empty; >> + empty.rm_so = empty.rm_eo = -1; > > Why not static regmatch_t empty = { .rm_so = -1, .rm_eo = -1 }; > ?
I tried that initially, but got warnings: In file included from /vol/gcc/src/hg/master/cobol/gcc/cobol/lexio.h:208, from /vol/gcc/src/hg/master/cobol/gcc/cobol/lexio.cc:36: /vol/gcc/src/hg/master/cobol/gcc/cobol/dts.h: In constructor ‘dts::csub_match::csub_match(const char*)’: /vol/gcc/src/hg/master/cobol/gcc/cobol/dts.h:36:60: warning: missing initializer for member ‘regmatch_t::rm_sp’ [-Wmissing-field-initializers] 36 | static regmatch_t empty = { .rm_so = -1, .rm_eo = -1 }; | ^ /vol/gcc/src/hg/master/cobol/gcc/cobol/dts.h:36:60: warning: missing initializer for member ‘regmatch_t::rm_ep’ [-Wmissing-field-initializers] /vol/gcc/src/hg/master/cobol/gcc/cobol/dts.h:36:60: warning: missing initializer for member ‘regmatch_t::rm_ss’ [-Wmissing-field-initializers] /vol/gcc/src/hg/master/cobol/gcc/cobol/dts.h:36:60: warning: missing initializer for member ‘regmatch_t::rm_es’ [-Wmissing-field-initializers] > While the FE needs to be valid C++14, the library is GNU++17 (compiled > by the just built GCC and not built with -pedantic*, so can use GCC > extensions or features from C++20 that are known to be implemented there). > > Ah, I see dts.h include from the FE. So that would need to be > #ifndef IN_GCC_FRONTEND > static const regmatch_t empty = { .rm_so = -1, .rm_eo = -1 }; > #else > regmatch_t empty = {}; > empty.rm_so = empty.rm_eo = -1; > #endif Isn't this overkill for such a minor issue? Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University