[PATCH] D151567: [LLVM][Support] Report EISDIR when opening a directory on AIX
Alison Zhang via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 1 07:53:31 PDT 2023
azhan92 updated this revision to Diff 546064.
azhan92 added a comment.
Check if file is directory before opening.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D151567/new/
https://reviews.llvm.org/D151567
Files:
clang/lib/AST/Interp/Floating.h
clang/lib/AST/Interp/InterpBuiltin.cpp
clang/test/AST/Interp/builtin-functions.cpp
Index: clang/test/AST/Interp/builtin-functions.cpp
===================================================================
--- clang/test/AST/Interp/builtin-functions.cpp
+++ clang/test/AST/Interp/builtin-functions.cpp
@@ -140,3 +140,7 @@
char classify_neg_zero[__builtin_fpclassify(-1, -1, -1, -1, +1, -0.0)];
char classify_subnorm [__builtin_fpclassify(-1, -1, -1, +1, -1, 1.0e-38f)];
}
+
+namespace fabs {
+ static_assert(__builtin_fabs(-14.0) == 14.0, "");
+}
Index: clang/lib/AST/Interp/InterpBuiltin.cpp
===================================================================
--- clang/lib/AST/Interp/InterpBuiltin.cpp
+++ clang/lib/AST/Interp/InterpBuiltin.cpp
@@ -266,6 +266,20 @@
return true;
}
+// The C standard says "fabs raises no floating-point exceptions,
+// even if x is a signaling NaN. The returned value is independent of
+// the current rounding direction mode." Therefore constant folding can
+// proceed without regard to the floating point settings.
+// Reference, WG14 N2478 F.10.4.3
+static bool interp__builtin_fabs(InterpState &S, CodePtr OpPC,
+ const InterpFrame *Frame,
+ const Function *Func) {
+ const Floating &Val = getParam<Floating>(Frame, 0);
+
+ S.Stk.push<Floating>(Floating::abs(Val));
+ return true;
+}
+
bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const Function *F) {
InterpFrame *Frame = S.Current;
APValue Dummy;
@@ -359,6 +373,14 @@
return Ret<PT_Sint32>(S, OpPC, Dummy);
break;
+ case Builtin::BI__builtin_fabs:
+ case Builtin::BI__builtin_fabsf:
+ case Builtin::BI__builtin_fabsl:
+ case Builtin::BI__builtin_fabsf128:
+ if (interp__builtin_fabs(S, OpPC, Frame, F))
+ return Ret<PT_Float>(S, OpPC, Dummy);
+ break;
+
default:
return false;
}
Index: clang/lib/AST/Interp/Floating.h
===================================================================
--- clang/lib/AST/Interp/Floating.h
+++ clang/lib/AST/Interp/Floating.h
@@ -119,6 +119,13 @@
return Status;
}
+ static Floating abs(const Floating &F) {
+ APFloat V = F.F;
+ if (V.isNegative())
+ V.changeSign();
+ return Floating(V);
+ }
+
// -------
static APFloat::opStatus add(const Floating &A, const Floating &B,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D151567.546064.patch
Type: text/x-patch
Size: 2279 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230801/84fbec3b/attachment.bin>
More information about the cfe-commits
mailing list