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