<div dir="ltr">The warning is correct. In the first case, memset tries to zero "Target" object which has a non-trivial constructor and non-trivial copy-constructor. The original code is broken in the way it mixes C and C++ initialization and the patch only papers over the issue.<div>The correct fix would be to provide a proper constructor for structs that include instances of C++ classes.</div><div><br></div><div>Jan<br><br><div class="gmail_quote"><div dir="ltr">On Sat, Sep 22, 2018 at 6:43 AM Karol Herbst <<a href="mailto:kherbst@redhat.com">kherbst@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">yeah, I agree here. Either the code was wrong in the first place,<br>
which means it would have to be fixed properly or the warning is<br>
wrong. The proper fix here is that GCC should detect itself if it's<br>
safe to do or not, otherwise that warning becomes a "might be a<br>
problem" thing which doesn't help at all. Either it is wrong, or it<br>
isn't. And gcc should be able to know in this case.<br>
<br>
On Sat, Sep 22, 2018 at 6:07 AM, Ilia Mirkin <<a href="mailto:imirkin@alum.mit.edu" target="_blank">imirkin@alum.mit.edu</a>> wrote:<br>
> Based on the various fixes, warning seems bogus -- is the proper<br>
> solution -Wno-class-memaccess? (Or however one disables such<br>
> things...)<br>
><br>
> On Fri, Sep 21, 2018 at 9:50 AM, Eric Engestrom<br>
> <<a href="mailto:eric.engestrom@intel.com" target="_blank">eric.engestrom@intel.com</a>> wrote:<br>
>> Signed-off-by: Eric Engestrom <<a href="mailto:eric.engestrom@intel.com" target="_blank">eric.engestrom@intel.com</a>><br>
>> ---<br>
>>  src/gallium/drivers/nouveau/codegen/nv50_ir.cpp        | 2 +-<br>
>>  src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp | 2 +-<br>
>>  2 files changed, 2 insertions(+), 2 deletions(-)<br>
>><br>
>> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp<br>
>> index 49425b98b9137058c986..62ebc2d24069b7b5f523 100644<br>
>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp<br>
>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp<br>
>> @@ -905,7 +905,7 @@ Instruction::isCommutationLegal(const Instruction *i) const<br>
>>  TexInstruction::TexInstruction(Function *fn, operation op)<br>
>>     : Instruction(fn, op, TYPE_F32)<br>
>>  {<br>
>> -   memset(&tex, 0, sizeof(tex));<br>
>> +   memset(static_cast<void*>(&tex), 0, sizeof(tex));<br>
>><br>
>>     tex.rIndirectSrc = -1;<br>
>>     tex.sIndirectSrc = -1;<br>
>> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp<br>
>> index 9193a01f189874a7fb38..b6b9b42964bec670079c 100644<br>
>> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp<br>
>> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp<br>
>> @@ -454,7 +454,7 @@ CodeEmitter::addInterp(int ipa, int reg, FixupApply apply)<br>
>>        if (!fixupInfo)<br>
>>           return false;<br>
>>        if (n == 0)<br>
>> -         memset(fixupInfo, 0, sizeof(FixupInfo));<br>
>> +         memset(static_cast<void*>(fixupInfo), 0, sizeof(FixupInfo));<br>
>>     }<br>
>>     ++fixupInfo->count;<br>
>><br>
>> --<br>
>> Cheers,<br>
>>   Eric<br>
>><br>
>> _______________________________________________<br>
>> mesa-dev mailing list<br>
>> <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
>> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
> _______________________________________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div></div></div>