* [PATCH] Mitigate -Wmaybe-uninitialized in expmed.cc.
@ 2022-05-16 8:37 Martin Liška
2022-05-16 8:56 ` Richard Sandiford
0 siblings, 1 reply; 5+ messages in thread
From: Martin Liška @ 2022-05-16 8:37 UTC (permalink / raw)
To: gcc-patches
It's the warning I see every time I build GCC:
In file included from /home/marxin/Programming/gcc/gcc/coretypes.h:478,
from /home/marxin/Programming/gcc/gcc/expmed.cc:26:
In function ‘poly_uint16 mode_to_bytes(machine_mode)’,
inlined from ‘typename if_nonpoly<typename T::measurement_type>::type GET_MODE_SIZE(const T&) [with T = scalar_int_mode]’ at /home/marxin/Programming/gcc/gcc/machmode.h:647:24,
inlined from ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’ at /home/marxin/Programming/gcc/gcc/expmed.cc:5728:56:
/home/marxin/Programming/gcc/gcc/machmode.h:550:49: warning: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ may be used uninitialized [-Wmaybe-uninitialized]
550 | ? mode_size_inline (mode) : mode_size[mode]);
| ^~~~
/home/marxin/Programming/gcc/gcc/expmed.cc: In function ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’:
/home/marxin/Programming/gcc/gcc/expmed.cc:5657:19: note: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ was declared here
5657 | scalar_int_mode int_mode;
| ^~~~~~~~
Can we please mitigate it?
gcc/ChangeLog:
* expmed.cc (emit_store_flag_1): Mitigate -Wmaybe-uninitialized
warning.
---
gcc/expmed.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gcc/expmed.cc b/gcc/expmed.cc
index 41738c1efe9..f23d63471ea 100644
--- a/gcc/expmed.cc
+++ b/gcc/expmed.cc
@@ -5654,7 +5654,7 @@ emit_store_flag_1 (rtx target, enum rtx_code code, rtx op0, rtx op1,
/* If we are comparing a double-word integer with zero or -1, we can
convert the comparison into one involving a single word. */
- scalar_int_mode int_mode;
+ scalar_int_mode int_mode = {};
if (is_int_mode (mode, &int_mode)
&& GET_MODE_BITSIZE (int_mode) == BITS_PER_WORD * 2
&& (!MEM_P (op0) || ! MEM_VOLATILE_P (op0)))
--
2.36.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Mitigate -Wmaybe-uninitialized in expmed.cc.
2022-05-16 8:37 [PATCH] Mitigate -Wmaybe-uninitialized in expmed.cc Martin Liška
@ 2022-05-16 8:56 ` Richard Sandiford
2022-05-16 10:32 ` Richard Biener
2022-05-19 14:17 ` Martin Liška
0 siblings, 2 replies; 5+ messages in thread
From: Richard Sandiford @ 2022-05-16 8:56 UTC (permalink / raw)
To: Martin Liška; +Cc: gcc-patches
Martin Liška <mliska@suse.cz> writes:
> It's the warning I see every time I build GCC:
>
> In file included from /home/marxin/Programming/gcc/gcc/coretypes.h:478,
> from /home/marxin/Programming/gcc/gcc/expmed.cc:26:
> In function ‘poly_uint16 mode_to_bytes(machine_mode)’,
> inlined from ‘typename if_nonpoly<typename T::measurement_type>::type GET_MODE_SIZE(const T&) [with T = scalar_int_mode]’ at /home/marxin/Programming/gcc/gcc/machmode.h:647:24,
> inlined from ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’ at /home/marxin/Programming/gcc/gcc/expmed.cc:5728:56:
> /home/marxin/Programming/gcc/gcc/machmode.h:550:49: warning: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ may be used uninitialized [-Wmaybe-uninitialized]
> 550 | ? mode_size_inline (mode) : mode_size[mode]);
> | ^~~~
> /home/marxin/Programming/gcc/gcc/expmed.cc: In function ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’:
> /home/marxin/Programming/gcc/gcc/expmed.cc:5657:19: note: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ was declared here
> 5657 | scalar_int_mode int_mode;
> | ^~~~~~~~
>
> Can we please mitigate it?
>
> gcc/ChangeLog:
>
> * expmed.cc (emit_store_flag_1): Mitigate -Wmaybe-uninitialized
> warning.
Not a strong objection, but TBH I'd rather we didn't work around false
positives like this.
Richard
> ---
> gcc/expmed.cc | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/expmed.cc b/gcc/expmed.cc
> index 41738c1efe9..f23d63471ea 100644
> --- a/gcc/expmed.cc
> +++ b/gcc/expmed.cc
> @@ -5654,7 +5654,7 @@ emit_store_flag_1 (rtx target, enum rtx_code code, rtx op0, rtx op1,
>
> /* If we are comparing a double-word integer with zero or -1, we can
> convert the comparison into one involving a single word. */
> - scalar_int_mode int_mode;
> + scalar_int_mode int_mode = {};
> if (is_int_mode (mode, &int_mode)
> && GET_MODE_BITSIZE (int_mode) == BITS_PER_WORD * 2
> && (!MEM_P (op0) || ! MEM_VOLATILE_P (op0)))
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Mitigate -Wmaybe-uninitialized in expmed.cc.
2022-05-16 8:56 ` Richard Sandiford
@ 2022-05-16 10:32 ` Richard Biener
2022-05-17 14:35 ` Martin Liška
2022-05-19 14:17 ` Martin Liška
1 sibling, 1 reply; 5+ messages in thread
From: Richard Biener @ 2022-05-16 10:32 UTC (permalink / raw)
To: Richard Sandiford, Martin Liška, GCC Patches
On Mon, May 16, 2022 at 11:18 AM Richard Sandiford via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Martin Liška <mliska@suse.cz> writes:
> > It's the warning I see every time I build GCC:
> >
> > In file included from /home/marxin/Programming/gcc/gcc/coretypes.h:478,
> > from /home/marxin/Programming/gcc/gcc/expmed.cc:26:
> > In function ‘poly_uint16 mode_to_bytes(machine_mode)’,
> > inlined from ‘typename if_nonpoly<typename T::measurement_type>::type GET_MODE_SIZE(const T&) [with T = scalar_int_mode]’ at /home/marxin/Programming/gcc/gcc/machmode.h:647:24,
> > inlined from ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’ at /home/marxin/Programming/gcc/gcc/expmed.cc:5728:56:
> > /home/marxin/Programming/gcc/gcc/machmode.h:550:49: warning: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ may be used uninitialized [-Wmaybe-uninitialized]
> > 550 | ? mode_size_inline (mode) : mode_size[mode]);
> > | ^~~~
> > /home/marxin/Programming/gcc/gcc/expmed.cc: In function ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’:
> > /home/marxin/Programming/gcc/gcc/expmed.cc:5657:19: note: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ was declared here
> > 5657 | scalar_int_mode int_mode;
> > | ^~~~~~~~
> >
> > Can we please mitigate it?
> >
> > gcc/ChangeLog:
> >
> > * expmed.cc (emit_store_flag_1): Mitigate -Wmaybe-uninitialized
> > warning.
>
> Not a strong objection, but TBH I'd rather we didn't work around false
> positives like this.
It only seems to happen with your host compiler though? The set of
# These files are to have specific diagnostics suppressed, or are not to
# be subject to -Werror:
# flex output may yield harmless "no previous prototype" warnings
build/gengtype-lex.o-warn = -Wno-error
gengtype-lex.o-warn = -Wno-error
libgcov-util.o-warn = -Wno-error
libgcov-driver-tool.o-warn = -Wno-error
libgcov-merge-tool.o-warn = -Wno-error
gimple-match.o-warn = -Wno-unused
generic-match.o-warn = -Wno-unused
dfp.o-warn = -Wno-strict-aliasing
doesn't include expmed.o at least.
> Richard
>
> > ---
> > gcc/expmed.cc | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/gcc/expmed.cc b/gcc/expmed.cc
> > index 41738c1efe9..f23d63471ea 100644
> > --- a/gcc/expmed.cc
> > +++ b/gcc/expmed.cc
> > @@ -5654,7 +5654,7 @@ emit_store_flag_1 (rtx target, enum rtx_code code, rtx op0, rtx op1,
> >
> > /* If we are comparing a double-word integer with zero or -1, we can
> > convert the comparison into one involving a single word. */
> > - scalar_int_mode int_mode;
> > + scalar_int_mode int_mode = {};
> > if (is_int_mode (mode, &int_mode)
> > && GET_MODE_BITSIZE (int_mode) == BITS_PER_WORD * 2
> > && (!MEM_P (op0) || ! MEM_VOLATILE_P (op0)))
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Mitigate -Wmaybe-uninitialized in expmed.cc.
2022-05-16 10:32 ` Richard Biener
@ 2022-05-17 14:35 ` Martin Liška
0 siblings, 0 replies; 5+ messages in thread
From: Martin Liška @ 2022-05-17 14:35 UTC (permalink / raw)
To: Richard Biener, Richard Sandiford, GCC Patches
On 5/16/22 12:32, Richard Biener wrote:
> It only seems to happen with your host compiler though? The set of
Yes, happens with just released 12.1 as host compiler:
g++ -fcf-protection -fno-PIE -c -g -O2 -DIN_GCC -fPIC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fno-common -DHAVE_CONFIG_H -I. -I. -I/home/marxin/Programming/gcc/gcc -I/home/marxin/Programming/gcc/gcc/. -I/home/marxin/Programming/gcc/gcc/../include -I/home/marxin/Programming/gcc/gcc/../libcpp/include -I/home/marxin/Programming/gcc/gcc/../libcody -I/home/marxin/Programming/gcc/gcc/../libdecnumber -I/home/marxin/Programming/gcc/gcc/../libdecnumber/bid -I../libdecnumber -I/home/marxin/Programming/gcc/gcc/../libbacktrace -o expmed.o -MT expmed.o -MMD -MP -MF ./.deps/expmed.TPo /home/marxin/Programming/gcc/gcc/expmed.cc
In file included from /home/marxin/Programming/gcc/gcc/coretypes.h:478,
from /home/marxin/Programming/gcc/gcc/expmed.cc:26:
In function ‘poly_uint16 mode_to_bytes(machine_mode)’,
inlined from ‘typename if_nonpoly<typename T::measurement_type>::type GET_MODE_SIZE(const T&) [with T = scalar_int_mode]’ at /home/marxin/Programming/gcc/gcc/machmode.h:647:24,
inlined from ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’ at /home/marxin/Programming/gcc/gcc/expmed.cc:5728:56:
/home/marxin/Programming/gcc/gcc/machmode.h:550:49: warning: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ may be used uninitialized [-Wmaybe-uninitialized]
550 | ? mode_size_inline (mode) : mode_size[mode]);
| ^~~~
/home/marxin/Programming/gcc/gcc/expmed.cc: In function ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’:
/home/marxin/Programming/gcc/gcc/expmed.cc:5657:19: note: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ was declared here
5657 | scalar_int_mode int_mode;
| ^~~~~~~~
Cheers,
Martin
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Mitigate -Wmaybe-uninitialized in expmed.cc.
2022-05-16 8:56 ` Richard Sandiford
2022-05-16 10:32 ` Richard Biener
@ 2022-05-19 14:17 ` Martin Liška
1 sibling, 0 replies; 5+ messages in thread
From: Martin Liška @ 2022-05-19 14:17 UTC (permalink / raw)
To: gcc-patches, richard.sandiford
On 5/16/22 10:56, Richard Sandiford wrote:
> Martin Liška <mliska@suse.cz> writes:
>> It's the warning I see every time I build GCC:
>>
>> In file included from /home/marxin/Programming/gcc/gcc/coretypes.h:478,
>> from /home/marxin/Programming/gcc/gcc/expmed.cc:26:
>> In function ‘poly_uint16 mode_to_bytes(machine_mode)’,
>> inlined from ‘typename if_nonpoly<typename T::measurement_type>::type GET_MODE_SIZE(const T&) [with T = scalar_int_mode]’ at /home/marxin/Programming/gcc/gcc/machmode.h:647:24,
>> inlined from ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’ at /home/marxin/Programming/gcc/gcc/expmed.cc:5728:56:
>> /home/marxin/Programming/gcc/gcc/machmode.h:550:49: warning: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ may be used uninitialized [-Wmaybe-uninitialized]
>> 550 | ? mode_size_inline (mode) : mode_size[mode]);
>> | ^~~~
>> /home/marxin/Programming/gcc/gcc/expmed.cc: In function ‘rtx_def* emit_store_flag_1(rtx, rtx_code, rtx, rtx, machine_mode, int, int, machine_mode)’:
>> /home/marxin/Programming/gcc/gcc/expmed.cc:5657:19: note: ‘*(unsigned int*)((char*)&int_mode + offsetof(scalar_int_mode, scalar_int_mode::m_mode))’ was declared here
>> 5657 | scalar_int_mode int_mode;
>> | ^~~~~~~~
>>
>> Can we please mitigate it?
>>
>> gcc/ChangeLog:
>>
>> * expmed.cc (emit_store_flag_1): Mitigate -Wmaybe-uninitialized
>> warning.
>
> Not a strong objection, but TBH I'd rather we didn't work around false
> positives like this.
Sure, but as you know, -Wmaybe-uninitialized has pretty high rate
of false positivity :/
Martin
>
> Richard
>
>> ---
>> gcc/expmed.cc | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/gcc/expmed.cc b/gcc/expmed.cc
>> index 41738c1efe9..f23d63471ea 100644
>> --- a/gcc/expmed.cc
>> +++ b/gcc/expmed.cc
>> @@ -5654,7 +5654,7 @@ emit_store_flag_1 (rtx target, enum rtx_code code, rtx op0, rtx op1,
>>
>> /* If we are comparing a double-word integer with zero or -1, we can
>> convert the comparison into one involving a single word. */
>> - scalar_int_mode int_mode;
>> + scalar_int_mode int_mode = {};
>> if (is_int_mode (mode, &int_mode)
>> && GET_MODE_BITSIZE (int_mode) == BITS_PER_WORD * 2
>> && (!MEM_P (op0) || ! MEM_VOLATILE_P (op0)))
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-05-19 14:17 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-16 8:37 [PATCH] Mitigate -Wmaybe-uninitialized in expmed.cc Martin Liška
2022-05-16 8:56 ` Richard Sandiford
2022-05-16 10:32 ` Richard Biener
2022-05-17 14:35 ` Martin Liška
2022-05-19 14:17 ` Martin Liška
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).