[Openmp-commits] [PATCH] D58454: [OpenMP][OMPT] Fix locking testcases for 32 bit architectures
Joachim Protze via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Thu Feb 21 06:45:45 PST 2019
protze.joachim marked an inline comment as done.
protze.joachim added inline comments.
================
Comment at: runtime/test/ompt/synchronization/lock.c:13
omp_lock_t lock;
- printf("%" PRIu64 ": &lock: %" PRIu64 "\n", ompt_get_thread_data()->value, (uint64_t) &lock);
+ printf("%" PRIu64 ": &lock: %" PRIu64 "\n", ompt_get_thread_data()->value, (ompt_wait_id_t) &lock);
omp_init_lock(&lock);
----------------
protze.joachim wrote:
> hans wrote:
> > I don't know this code at all obviously, but will this work with the PRIu64 conversion specifier? If ompt_wait_id_t is 32-bit on 32-bit platforms, this sounds like it wouldn't match?
> ompt_wait_id_t is defined to be 64 bit by the OpenMP spec.
>
> The problem is the expansion to 64 bit in the cast.
> gcc and clang seem to have a different idea of what should be the result on 32 bit arch for
>
> `int a;
> (uint64_t)&a;`
>
> I still can reproduce the issue when using gcc as test compiler after compiling the runtime with clang or vice versa.
https://reviews.llvm.org/D58506 casts the addresses to uintptr_t before expanding to 64 bit.
Repository:
rL LLVM
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D58454/new/
https://reviews.llvm.org/D58454
More information about the Openmp-commits
mailing list