[flang-commits] [flang] [llvm] [flang-rt] Add fatal diagnostics with integer values (PR #231241)
via flang-commits
flang-commits at lists.llvm.org
Tue Oct 13 04:17:32 PDT 2026
================
@@ -128,3 +130,83 @@ TEST_F(TestProgramEnd, CrashTest) {
RTNAME(ReportFatalUserError)(crashMessage.c_str(), fileName.c_str(), 343),
fullMessage.c_str());
}
+
+TEST_F(TestProgramEnd, CrashValuesTest) {
+ EXPECT_DEATH(
+ RTNAME(ReportFatalUserErrorValues)("sizes %lld, %lld, %lld, %lld %%",
+ "check.f90", 42, -17, 4294967296LL, 0, 9),
+ "check.f90\\(42\\): sizes -17, 4294967296, 0, 9 %");
+}
+
+TEST_F(TestProgramEnd, CrashValuesWithoutValuesTest) {
+ EXPECT_DEATH(RTNAME(ReportFatalUserErrorValues)(
+ "bad argument: 100%%", "check.f90", 7, 0, 0, 0, 0),
+ "check.f90\\(7\\): bad argument: 100%");
+}
+
+TEST_F(TestProgramEnd, CrashValueArrayTest) {
+ const long long values[]{std::numeric_limits<long long>::min(),
+ std::numeric_limits<long long>::max(), 0, -1, 4294967296LL, 17};
+ EXPECT_DEATH(
+ RTNAME(ReportFatalUserErrorValueArray)(
+ "%lld %lld %lld %lld %lld %%%lld %%lld", "check.f90", 43, 6, values),
+ "check.f90\\(43\\): -9223372036854775808 9223372036854775807 0 -1 "
+ "4294967296 %17 %lld");
+}
+
+TEST_F(TestProgramEnd, CrashValueArrayWithoutValuesTest) {
+ EXPECT_DEATH(RTNAME(ReportFatalUserErrorValueArray)(
+ "bad argument: 100%%", "check.f90", 7, 0, nullptr),
+ "check.f90\\(7\\): bad argument: 100%");
+ EXPECT_DEATH(
+ RTNAME(ReportFatalUserErrorValueArray)("", "check.f90", 7, 0, nullptr),
+ "check.f90\\(7\\): ");
+}
+
+TEST_F(TestProgramEnd, CrashValueArrayInvalidFormatTest) {
+ for (const char *message : {"%", "%l", "%ll", "%d", "%n", "%1$lld"}) {
+ EXPECT_DEATH(RTNAME(ReportFatalUserErrorValueArray)(
+ message, "check.f90", 7, 0, nullptr),
+ "Invalid fatal error message format");
+ }
+}
+
+TEST_F(TestProgramEnd, CrashValueArrayCountMismatchTest) {
+ const long long values[]{1, 2};
+ EXPECT_DEATH(RTNAME(ReportFatalUserErrorValueArray)(
+ "%lld %lld", "check.f90", 7, 1, values),
+ "Fatal error message value count mismatch");
+ EXPECT_DEATH(
+ RTNAME(ReportFatalUserErrorValueArray)("%lld", "check.f90", 7, 2, values),
+ "Fatal error message value count mismatch");
+ EXPECT_DEATH(RTNAME(ReportFatalUserErrorValueArray)(
+ "%lld", "check.f90", 7, 0, nullptr),
+ "Fatal error message value count mismatch");
+ EXPECT_DEATH(RTNAME(ReportFatalUserErrorValueArray)(
+ "%lld", "check.f90", 7, 1, nullptr),
+ "RUNTIME_CHECK");
+}
+
+TEST_F(TestProgramEnd, CrashValueArraySizeOverflowTest) {
+ const long long value{0};
+ EXPECT_DEATH(RTNAME(ReportFatalUserErrorValueArray)("%lld", "check.f90", 7,
+ std::numeric_limits<std::size_t>::max(), &value),
+ "Fatal error message size overflow");
+}
----------------
jeanPerier wrote:
Updated the test to expect a count mismatch for both SIZE_MAX and SIZE_MAX / 64.
https://github.com/llvm/llvm-project/pull/231241
More information about the flang-commits
mailing list