[PATCH] D111986: [Clang] Add elementwise abs builtin.

Florian Hahn via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Oct 26 13:18:53 PDT 2021


fhahn marked an inline comment as done.
fhahn added inline comments.


================
Comment at: clang/lib/Sema/SemaChecking.cpp:16547
+  Expr *A = TheCall->getArg(0);
+  QualType TyA = A->getType();
+
----------------
aaron.ballman wrote:
> fhahn wrote:
> > aaron.ballman wrote:
> > > Should this type undergo the usual promotions?
> > I'm not sure, but given that we only have a single argument then wouldn't it be sufficient to avoid promotion? I don't think promotion to wider types would impact the results of the provided builtins.
> You set the type of the call to be the type of the argument, which means passing in a `const int` will result in a `const int` that's observable and probably unexpected. e.g. this will fail,
> ```
> const int a = -12;
> static_assert(!std::is_const_v<decltype(__builtin_elementwise_abs(a))>);
> ```
> (This can come up with overload resolution or in template specializations.)
Ah right. I originally was planning on just using `getUnqualifiedType`, but for consistency it seems better to just apply the usual unary conversions. I also added the test above and a codegen tests with `short`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D111986



More information about the cfe-commits mailing list