================
@@ -2339,6 +2345,28 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl
GD, unsigned BuiltinID,
// LLVM counterparts if the call is marked 'const' (known to never set
errno).
// In case FP exceptions are enabled, the experimental versions of the
// intrinsics model those.
+ bool ConstAlways =
+ getContext().BuiltinInfo.isConst(BuiltinID);
+
+ // There's a special case with the fma builtins where they are always const
+ // if the target environment is GNU or the target is OS is Windows and we're
+ // targeting the MSVCRT.dll environment.
+ switch (BuiltinID) {
----------------
andykaylor wrote:
@zahiraam I think the best way to do that would be to add a new letter vcode to
the attributes here:
https://github.com/llvm/llvm-project/blob/cbdccb30c23f71f20d05b19256232419e7c5e517/clang/include/clang/Basic/Builtins.def#L74
-- something like "// m -> const when we GNU or MSVCRT libraries are
targeted" and then fma, for example, would become "BUILTIN(__builtin_fma,
"dddd", "Fmne")"
I'd suggest doing that as a separate patch, because it isn't obvious exactly
how it should be managed.
I'm more concerned about the fact that Sema is marking calls as const in the
AST based on the builtins information but we later discover that they aren't,
in fact, const because of a pragma being used. @AaronBallman do you have any
ideas about how that could be improved?
https://github.com/llvm/llvm-project/pull/66381
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits