On Saturday, 2018-09-22 10:27:50 -0400, Jan Vesely wrote: > 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. > The correct fix would be to provide a proper constructor for structs that > include instances of C++ classes.
Thanks for the analysis here, I'll drop these memaccess patches. The correct fix is beyond what I'm willing to do though, so I'll let someone else fix them :) > > Jan > > On Sat, Sep 22, 2018 at 6:43 AM Karol Herbst <kher...@redhat.com> wrote: > > > yeah, I agree here. Either the code was wrong in the first place, > > which means it would have to be fixed properly or the warning is > > wrong. The proper fix here is that GCC should detect itself if it's > > safe to do or not, otherwise that warning becomes a "might be a > > problem" thing which doesn't help at all. Either it is wrong, or it > > isn't. And gcc should be able to know in this case. > > > > On Sat, Sep 22, 2018 at 6:07 AM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > > > Based on the various fixes, warning seems bogus -- is the proper > > > solution -Wno-class-memaccess? (Or however one disables such > > > things...) > > > > > > On Fri, Sep 21, 2018 at 9:50 AM, Eric Engestrom > > > <eric.engest...@intel.com> wrote: > > >> Signed-off-by: Eric Engestrom <eric.engest...@intel.com> > > >> --- > > >> src/gallium/drivers/nouveau/codegen/nv50_ir.cpp | 2 +- > > >> src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp | 2 +- > > >> 2 files changed, 2 insertions(+), 2 deletions(-) > > >> > > >> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp > > b/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp > > >> index 49425b98b9137058c986..62ebc2d24069b7b5f523 100644 > > >> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp > > >> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp > > >> @@ -905,7 +905,7 @@ Instruction::isCommutationLegal(const Instruction > > *i) const > > >> TexInstruction::TexInstruction(Function *fn, operation op) > > >> : Instruction(fn, op, TYPE_F32) > > >> { > > >> - memset(&tex, 0, sizeof(tex)); > > >> + memset(static_cast<void*>(&tex), 0, sizeof(tex)); > > >> > > >> tex.rIndirectSrc = -1; > > >> tex.sIndirectSrc = -1; > > >> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp > > b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp > > >> index 9193a01f189874a7fb38..b6b9b42964bec670079c 100644 > > >> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp > > >> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp > > >> @@ -454,7 +454,7 @@ CodeEmitter::addInterp(int ipa, int reg, FixupApply > > apply) > > >> if (!fixupInfo) > > >> return false; > > >> if (n == 0) > > >> - memset(fixupInfo, 0, sizeof(FixupInfo)); > > >> + memset(static_cast<void*>(fixupInfo), 0, sizeof(FixupInfo)); > > >> } > > >> ++fixupInfo->count; > > >> > > >> -- > > >> Cheers, > > >> Eric > > >> > > >> _______________________________________________ > > >> mesa-dev mailing list > > >> mesa-dev@lists.freedesktop.org > > >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev > > > _______________________________________________ > > > mesa-dev mailing list > > > mesa-dev@lists.freedesktop.org > > > https://lists.freedesktop.org/mailman/listinfo/mesa-dev > > _______________________________________________ > > mesa-dev mailing list > > mesa-dev@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/mesa-dev > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev