diff options
author | Ben Gamari <ben@well-typed.com> | 2023-04-11 21:23:01 +0000 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2023-04-24 12:19:06 -0400 |
commit | 787c6e8c5b96c95ead6cc7c213d12c5983975084 (patch) | |
tree | a9fe83d3c83f059390a33d11079707cbe603e902 | |
parent | 97a6f7bc5e2408d99c3ecdef85b7cc66ff994de3 (diff) | |
download | haskell-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-32 | 10 | ||||
-rw-r--r-- | testsuite/tests/codeGen/should_run/T20137/T20137C.c | 18 |
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; } |