junaire added a comment.

In D114688#3176567 <https://reviews.llvm.org/D114688#3176567>, @aaron.ballman 
wrote:

> In D114688#3176433 <https://reviews.llvm.org/D114688#3176433>, @fhahn wrote:
>
>> I think it might be good to split off the refactoring of 
>> `SemaBuiltinElementwiseMathOneArg`-> 
>> `PrepareBuiltinElementwiseMathOneArgCall` and the update for 
>> `BI__builtin_elementwise_abs` into a separate, non functional change (NFC).
>
> FWIW, I would not be opposed to that, but I don't insist either. LGTM!

Hi, @fhahn @aaron.ballman . Thanks for your patient reviews and valuable 
suggestions! I think I might not apply the extra suggestion as I don't really 
understand that, sorry... BTW, if you think this patch is ready, could you 
please commit this for me?

You can use:
Jun Zhang j...@junz.org

Cheers



================
Comment at: clang/lib/Sema/SemaChecking.cpp:16727-16728
   QualType TyA = A.get()->getType();
-  if (checkMathBuiltinElementType(*this, ArgLoc, TyA))
+  if (checkMathBuiltinElementType(*this, ArgLoc, TyA) ||
+      ExtraCheck(TyA, ArgLoc))
     return true;
----------------
fhahn wrote:
> aaron.ballman wrote:
> > In some ways, it's a not really ideal that we split the type checking like 
> > this. `SemaBuiltinElementwiseMathOneArg()` checks some type validity and 
> > the caller checks some more type validity, so there's no one location to 
> > know what types are actually expected for any given builtin calling this.
> > 
> > Would it be reasonable to instead hoist all the type checking code out of 
> > `SemaBuiltinElementwiseMathOneArg()` and not pass in a functor to it, but 
> > instead check the `CallExpr` type after the call returns? We could also fix 
> > up the function name to be a bit less nonsensical at the same time, like 
> > renaming it to `PrepareBuiltinElementwiseMathOneArgCall()` or something 
> > along those lines?
> > Would it be reasonable to instead hoist all the type checking code out of 
> > SemaBuiltinElementwiseMathOneArg() and not pass in a functor to it, but 
> > instead check the CallExpr type after the call returns?
> 
> Yeah that sounds better!
> In some ways, it's not really ideal that we split the type checking like 
> this. `SemaBuiltinElementwiseMathOneArg()` checks some type validity and the 
> caller checks some more type validity, so there's no one location to know 
> what types are actually expected for any given builtin calling this.
> 
> Would it be reasonable to instead hoist all the type checking code out of 
> `SemaBuiltinElementwiseMathOneArg()` and not pass in a functor to it, but 
> instead check the `CallExpr` type after the call returns? We could also fix 
> up the function name to be a bit less nonsensical at the same time, like 
> renaming it to `PrepareBuiltinElementwiseMathOneArgCall()` or something along 
> those lines?

Hi, Aaron! Thanks for your review! Unfortunately, I don't get what you mean. :( 
Sorry about that, I'm completely a newbie... 

>check the `CallExpr` type after the call returns?

What does this mean? From my understanding, we only need to check the argument 
type, right? Or do you mean something like:
```
  TheCall->setType(TyA);  // inside checking function
...

TheCall->getType(); // call side
```
Do I understand you correctly? Please don't hesitate to point out any mistake I 
made, thanks!



================
Comment at: clang/lib/Sema/SemaChecking.cpp:16721
 
+bool Sema::SemaBuiltinElementwiseMathFloatArg(CallExpr *TheCall) {
+  if (checkArgCount(*this, TheCall, 1))
----------------
fhahn wrote:
> If I understand correctly, this is similar to 
> `SemaBuiltinElementwiseMathOneArg`, but with the additional restriction to 
> only allow floating point element types? 
> 
> Do you think it would be possible to extend 
> `SemaBuiltinElementwiseMathOneArg` to handle this case directly, without 
> needing to duplicate most of the other logic?
> If I understand correctly, this is similar to 
> `SemaBuiltinElementwiseMathOneArg`, but with the additional restriction to 
> only allow floating point element types? 
> 
> Do you think it would be possible to extend 
> `SemaBuiltinElementwiseMathOneArg` to handle this case directly, without 
> needing to duplicate most of the other logic?

Hi, Florian, Thanks for your suggestion! I have updated the patch, PTAL :-)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D114688/new/

https://reviews.llvm.org/D114688

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

Reply via email to