summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@well-typed.com>2023-04-11 21:23:01 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-04-24 12:19:06 -0400
commit787c6e8c5b96c95ead6cc7c213d12c5983975084 (patch)
treea9fe83d3c83f059390a33d11079707cbe603e902
parent97a6f7bc5e2408d99c3ecdef85b7cc66ff994de3 (diff)
downloadhaskell-787c6e8c5b96c95ead6cc7c213d12c5983975084.tar.gz
testsuite/T20137: Avoid impl.-defined behavior
Previously we would cast pointers to uint64_t. However, implementations are allowed to either zero- or sign-extend such casts. Instead cast to uintptr_t to avoid this. Fixes #23247.
-rw-r--r--testsuite/tests/codeGen/should_run/T20137/T20137.stdout-ws-3210
-rw-r--r--testsuite/tests/codeGen/should_run/T20137/T20137C.c18
2 files changed, 14 insertions, 14 deletions
diff --git a/testsuite/tests/codeGen/should_run/T20137/T20137.stdout-ws-32 b/testsuite/tests/codeGen/should_run/T20137/T20137.stdout-ws-32
index 85408b75a5..30e04a5cae 100644
--- a/testsuite/tests/codeGen/should_run/T20137/T20137.stdout-ws-32
+++ b/testsuite/tests/codeGen/should_run/T20137/T20137.stdout-ws-32
@@ -5,9 +5,9 @@
5
6
77777777
-ffffffff88888888
-ffffffff99999999
-ffffffffaaaaaaaa
-ffffffffbbbbbbbb
+88888888
+99999999
+aaaaaaaa
+bbbbbbbb
cccccccc
-ffffffffdddddddd
+dddddddd
diff --git a/testsuite/tests/codeGen/should_run/T20137/T20137C.c b/testsuite/tests/codeGen/should_run/T20137/T20137C.c
index f68d88a054..dda9008300 100644
--- a/testsuite/tests/codeGen/should_run/T20137/T20137C.c
+++ b/testsuite/tests/codeGen/should_run/T20137/T20137C.c
@@ -16,19 +16,19 @@ runInteractiveProcess (char *const * args,
{
// N.B. We don't use %p here since the rendering of this varies across
// libc implementations
- printf("%" PRIx64 "\n", (uint64_t) args);
- printf("%" PRIx64 "\n", (uint64_t) workingDirectory);
- printf("%" PRIx64 "\n", (uint64_t) environment);
+ printf("%" PRIxPTR "\n", (uintptr_t) args);
+ printf("%" PRIxPTR "\n", (uintptr_t) workingDirectory);
+ printf("%" PRIxPTR "\n", (uintptr_t) environment);
printf("%x\n", fdStdIn);
printf("%x\n", fdStdOut);
printf("%x\n", fdStdErr);
- printf("%" PRIx64 "\n", (uint64_t) pfdStdInput);
- printf("%" PRIx64 "\n", (uint64_t) pfdStdOutput);
- printf("%" PRIx64 "\n", (uint64_t) pfdStdError);
- printf("%" PRIx64 "\n", (uint64_t) childGroup);
- printf("%" PRIx64 "\n", (uint64_t) childUser);
+ printf("%" PRIxPTR "\n", (uintptr_t) pfdStdInput);
+ printf("%" PRIxPTR "\n", (uintptr_t) pfdStdOutput);
+ printf("%" PRIxPTR "\n", (uintptr_t) pfdStdError);
+ printf("%" PRIxPTR "\n", (uintptr_t) childGroup);
+ printf("%" PRIxPTR "\n", (uintptr_t) childUser);
printf("%x\n", flags);
- printf("%" PRIx64 "\n", (uint64_t) failed_doing);
+ printf("%" PRIxPTR "\n", (uintptr_t) failed_doing);
return 0;
}