mzolotukhin added a comment.

Hi Richard, Hal, and others,

I updated the patch according to review remarks - now we support vector and 
boolean types too! Could you please take a look?

Thanks,
Michael


================
Comment at: lib/CodeGen/CGBuiltin.cpp:128-129
@@ +127,4 @@
+  Val = CGF.EmitToMemory(Val, E->getArg(0)->getType());
+  Value *BC = CGF.Builder.CreateBitCast(
+      Address, llvm::PointerType::getUnqual(Val->getType()), "cast");
+  StoreInst *SI = CGF.Builder.CreateStore(Val, BC);
----------------
Thanks! Fixed.

================
Comment at: lib/CodeGen/CGBuiltin.cpp:149
@@ +148,3 @@
+  return LI;
+}
+
----------------
In this case we already have with `i8` value - AFAIU, we get `i8*` pointer from 
`EmitScalarExpr(E->getArg(0))`. Do I miss something here?

================
Comment at: lib/Sema/SemaChecking.cpp:2236-2242
@@ +2235,9 @@
+
+  // Ensure that we have the proper number of arguments.
+  if (checkArgCount(*this, TheCall, numArgs))
+    return ExprError();
+
+  // Inspect the last argument of the nontemporal builtin.  This should always
+  // be a pointer type, from which we imply the type of the memory access.
+  // Because it is a pointer type, we don't have to worry about any implicit
+  // casts here.
----------------
Good idea, thanks!


http://reviews.llvm.org/D12313



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to