diff --git a/openmp/runtime/test/tasking/bug_nested_proxy_task.c b/openmp/runtime/test/tasking/bug_nested_proxy_task.c --- a/openmp/runtime/test/tasking/bug_nested_proxy_task.c +++ b/openmp/runtime/test/tasking/bug_nested_proxy_task.c @@ -20,11 +20,18 @@ */ // Compiler-generated code (emulation) +#ifdef _WIN64 +typedef long long kmp_intptr_t; +#else typedef long kmp_intptr_t; +#endif typedef int kmp_int32; +typedef unsigned char kmp_uint8; typedef char bool; +// These structs need to match the implementation within libomp, in kmp.h. + typedef struct ident { kmp_int32 reserved_1; /**< might be used in Fortran; see above */ kmp_int32 flags; /**< also f.flags; KMP_IDENT_xxx flags; KMP_IDENT_KMPC identifies this union member */ @@ -43,10 +50,17 @@ typedef struct kmp_depend_info { kmp_intptr_t base_addr; size_t len; - struct { - bool in:1; - bool out:1; - } flags; + union { + kmp_uint8 flag; // flag as an unsigned char + struct { // flag as a set of 8 bits + unsigned in : 1; + unsigned out : 1; + unsigned mtx : 1; + unsigned set : 1; + unsigned unused : 3; + unsigned all : 1; + } flags; + }; } kmp_depend_info_t; struct kmp_task; @@ -105,8 +119,8 @@ my_sleep( 0.1 ); } */ - kmp_depend_info_t dep_info; - dep_info.base_addr = (long) &dep; + kmp_depend_info_t dep_info = { 0 }; + dep_info.base_addr = (kmp_intptr_t) &dep; dep_info.len = sizeof(int); // out = inout per spec and runtime expects this dep_info.flags.in = 1; diff --git a/openmp/runtime/test/tasking/bug_proxy_task_dep_waiting.c b/openmp/runtime/test/tasking/bug_proxy_task_dep_waiting.c --- a/openmp/runtime/test/tasking/bug_proxy_task_dep_waiting.c +++ b/openmp/runtime/test/tasking/bug_proxy_task_dep_waiting.c @@ -17,11 +17,18 @@ */ // Compiler-generated code (emulation) +#ifdef _WIN64 +typedef long long kmp_intptr_t; +#else typedef long kmp_intptr_t; +#endif typedef int kmp_int32; +typedef unsigned char kmp_uint8; typedef char bool; +// These structs need to match the implementation within libomp, in kmp.h. + typedef struct ident { kmp_int32 reserved_1; /**< might be used in Fortran; see above */ kmp_int32 flags; /**< also f.flags; KMP_IDENT_xxx flags; KMP_IDENT_KMPC identifies this union member */ @@ -40,10 +47,17 @@ typedef struct kmp_depend_info { kmp_intptr_t base_addr; size_t len; - struct { - bool in:1; - bool out:1; - } flags; + union { + kmp_uint8 flag; // flag as an unsigned char + struct { // flag as a set of 8 bits + unsigned in : 1; + unsigned out : 1; + unsigned mtx : 1; + unsigned set : 1; + unsigned unused : 3; + unsigned all : 1; + } flags; + }; } kmp_depend_info_t; struct kmp_task; @@ -100,8 +114,8 @@ my_sleep( 0.1 ); } */ - kmp_depend_info_t dep_info; - dep_info.base_addr = (long) &dep; + kmp_depend_info_t dep_info = { 0 }; + dep_info.base_addr = (kmp_intptr_t) &dep; dep_info.len = sizeof(int); // out = inout per spec and runtime expects this dep_info.flags.in = 1;