@@ -1688,8 +1688,9 @@ static bool CheckVectorElementCallArgs(Sema *S, CallExpr *TheCall) {
16881688  auto  *VecTyA = ArgTyA->getAs <VectorType>();
16891689  SourceLocation BuiltinLoc = TheCall->getBeginLoc ();
16901690
1691+   ExprResult B;
16911692  for  (unsigned  i = 1 ; i < TheCall->getNumArgs (); ++i) {
1692-     ExprResult  B = TheCall->getArg (i);
1693+     B = TheCall->getArg (i);
16931694    QualType ArgTyB = B.get ()->getType ();
16941695    auto  *VecTyB = ArgTyB->getAs <VectorType>();
16951696    if  (VecTyA == nullptr  && VecTyB == nullptr )
@@ -1712,8 +1713,7 @@ static bool CheckVectorElementCallArgs(Sema *S, CallExpr *TheCall) {
17121713        //  HLSLVectorTruncation.
17131714        S->Diag (BuiltinLoc, diag::err_vec_builtin_incompatible_vector)
17141715            << TheCall->getDirectCallee () << /* useAllTerminology*/   true 
1715-             << SourceRange (TheCall->getArg (0 )->getBeginLoc (),
1716-                            TheCall->getArg (1 )->getEndLoc ());
1716+             << SourceRange (A.get ()->getBeginLoc (), B.get ()->getEndLoc ());
17171717        retValue = true ;
17181718      }
17191719      return  retValue;
@@ -1724,8 +1724,7 @@ static bool CheckVectorElementCallArgs(Sema *S, CallExpr *TheCall) {
17241724  //  requires a VectorSplat on Arg0 or Arg1
17251725  S->Diag (BuiltinLoc, diag::err_vec_builtin_non_vector)
17261726      << TheCall->getDirectCallee () << /* useAllTerminology*/   true 
1727-       << SourceRange (TheCall->getArg (0 )->getBeginLoc (),
1728-                      TheCall->getArg (1 )->getEndLoc ());
1727+       << SourceRange (A.get ()->getBeginLoc (), B.get ()->getEndLoc ());
17291728  return  true ;
17301729}
17311730
0 commit comments