Fix the last -Wnon-pod-memset I'm seeing. This is benign, but appears
authorChandler Carruth <chandlerc@gmail.com>
Thu, 28 Apr 2011 08:37:18 +0000 (08:37 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Thu, 28 Apr 2011 08:37:18 +0000 (08:37 +0000)
a bit more sinister as the memset doesn't do what the constructor does.
There seems to be a cleaner solution than a cast here though, instead we
can point the memset destination into the union its actually trying to
clear.

An alternative is to point to the Untyped member of this union. Review
appreciated, and if that is cleaner I'm happy to switch. All of these
should be functionally equivalent to the original code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130395 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/ExecutionEngine.cpp

index 6d767be492b3137e3f03e118a68918c52c26babd..2b1e8786c7274f83135e442308540c6c35eeb659 100644 (file)
@@ -839,7 +839,7 @@ void ExecutionEngine::StoreValueToMemory(const GenericValue &Val,
   case Type::PointerTyID:
     // Ensure 64 bit target pointers are fully initialized on 32 bit hosts.
     if (StoreBytes != sizeof(PointerTy))
-      memset(Ptr, 0, StoreBytes);
+      memset(&(Ptr->PointerVal), 0, StoreBytes);
 
     *((PointerTy*)Ptr) = Val.PointerVal;
     break;