Compare commits
9 Commits
llvmorg-8.
...
llvmorg-8.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19a71f6bdf | ||
|
|
635f8ffdbd | ||
|
|
180a937d9a | ||
|
|
cf7a59f2d7 | ||
|
|
21f32a9683 | ||
|
|
d37559239d | ||
|
|
464c365c0f | ||
|
|
4ebe62d309 | ||
|
|
c2be208067 |
@@ -1937,8 +1937,9 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, Qualifiers,
|
||||
// ::= _M # unsigned __int128
|
||||
// ::= _N # bool
|
||||
// _O # <array in parameter>
|
||||
// ::= _T # __float80 (Intel)
|
||||
// ::= _Q # char8_t
|
||||
// ::= _S # char16_t
|
||||
// ::= _T # __float80 (Intel)
|
||||
// ::= _U # char32_t
|
||||
// ::= _W # wchar_t
|
||||
// ::= _Z # __float80 (Digital Mars)
|
||||
@@ -1999,6 +2000,9 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, Qualifiers,
|
||||
case BuiltinType::Bool:
|
||||
Out << "_N";
|
||||
break;
|
||||
case BuiltinType::Char8:
|
||||
Out << "_Q";
|
||||
break;
|
||||
case BuiltinType::Char16:
|
||||
Out << "_S";
|
||||
break;
|
||||
@@ -2094,7 +2098,6 @@ void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T, Qualifiers,
|
||||
case BuiltinType::SatUShortFract:
|
||||
case BuiltinType::SatUFract:
|
||||
case BuiltinType::SatULongFract:
|
||||
case BuiltinType::Char8:
|
||||
case BuiltinType::Float128: {
|
||||
DiagnosticsEngine &Diags = Context.getDiags();
|
||||
unsigned DiagID = Diags.getCustomDiagID(
|
||||
|
||||
@@ -1817,32 +1817,24 @@ CGDebugInfo::CollectFunctionTemplateParams(const FunctionDecl *FD,
|
||||
}
|
||||
|
||||
llvm::DINodeArray CGDebugInfo::CollectVarTemplateParams(const VarDecl *VL,
|
||||
llvm::DIFile *Unit) {
|
||||
if (auto *TS = dyn_cast<VarTemplateSpecializationDecl>(VL)) {
|
||||
auto T = TS->getSpecializedTemplateOrPartial();
|
||||
auto TA = TS->getTemplateArgs().asArray();
|
||||
// Collect parameters for a partial specialization
|
||||
if (T.is<VarTemplatePartialSpecializationDecl *>()) {
|
||||
const TemplateParameterList *TList =
|
||||
T.get<VarTemplatePartialSpecializationDecl *>()
|
||||
->getTemplateParameters();
|
||||
return CollectTemplateParams(TList, TA, Unit);
|
||||
}
|
||||
|
||||
// Collect parameters for an explicit specialization
|
||||
if (T.is<VarTemplateDecl *>()) {
|
||||
const TemplateParameterList *TList = T.get<VarTemplateDecl *>()
|
||||
->getTemplateParameters();
|
||||
return CollectTemplateParams(TList, TA, Unit);
|
||||
}
|
||||
}
|
||||
return llvm::DINodeArray();
|
||||
llvm::DIFile *Unit) {
|
||||
// Always get the full list of parameters, not just the ones from the
|
||||
// specialization. A partial specialization may have fewer parameters than
|
||||
// there are arguments.
|
||||
auto *TS = dyn_cast<VarTemplateSpecializationDecl>(VL);
|
||||
if (!TS)
|
||||
return llvm::DINodeArray();
|
||||
VarTemplateDecl *T = TS->getSpecializedTemplate();
|
||||
const TemplateParameterList *TList = T->getTemplateParameters();
|
||||
auto TA = TS->getTemplateArgs().asArray();
|
||||
return CollectTemplateParams(TList, TA, Unit);
|
||||
}
|
||||
|
||||
llvm::DINodeArray CGDebugInfo::CollectCXXTemplateParams(
|
||||
const ClassTemplateSpecializationDecl *TSpecial, llvm::DIFile *Unit) {
|
||||
// Always get the full list of parameters, not just the ones from
|
||||
// the specialization.
|
||||
// Always get the full list of parameters, not just the ones from the
|
||||
// specialization. A partial specialization may have fewer parameters than
|
||||
// there are arguments.
|
||||
TemplateParameterList *TPList =
|
||||
TSpecial->getSpecializedTemplate()->getTemplateParameters();
|
||||
const TemplateArgumentList &TAList = TSpecial->getTemplateArgs();
|
||||
|
||||
@@ -116,7 +116,7 @@ ppc::ReadGOTPtrMode ppc::getPPCReadGOTPtrMode(const Driver &D, const llvm::Tripl
|
||||
const ArgList &Args) {
|
||||
if (Args.getLastArg(options::OPT_msecure_plt))
|
||||
return ppc::ReadGOTPtrMode::SecurePlt;
|
||||
if (Triple.isOSOpenBSD())
|
||||
if (Triple.isOSNetBSD() || Triple.isOSOpenBSD())
|
||||
return ppc::ReadGOTPtrMode::SecurePlt;
|
||||
else
|
||||
return ppc::ReadGOTPtrMode::Bss;
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
// RUN: %clang_cc1 -std=c++17 -emit-llvm -fchar8_t -triple x86_64-linux %s -o - | FileCheck %s
|
||||
// RUN: %clang_cc1 -std=c++17 -emit-llvm -fchar8_t -triple x86_64-windows %s -o - -verify
|
||||
// RUN: %clang_cc1 -std=c++17 -emit-llvm -fchar8_t -triple x86_64-linux %s -o - | FileCheck %s --check-prefix=ITANIUM
|
||||
// RUN: %clang_cc1 -std=c++17 -emit-llvm -fchar8_t -triple x86_64-windows %s -o - | FileCheck %s --check-prefix=MSABI
|
||||
|
||||
// CHECK: define void @_Z1fDu(
|
||||
void f(char8_t c) {} // expected-error {{cannot mangle this built-in char8_t type yet}}
|
||||
// ITANIUM: define void @_Z1fDu(
|
||||
// MSABI: define {{.*}}void @"?f@@YAX_Q@Z"(
|
||||
void f(char8_t c) {}
|
||||
|
||||
// CHECK: define weak_odr void @_Z1gIiEvDTplplcvT__ELA4_KDuELDu114EE
|
||||
// ITANIUM: define weak_odr void @_Z1gIiEvDTplplcvT__ELA4_KDuELDu114EE(
|
||||
// MSABI: define weak_odr {{.*}}void @"??$g@H@@YAXPEB_Q@Z"(
|
||||
template<typename T> void g(decltype(T() + u8"foo" + u8'r')) {}
|
||||
template void g<int>(const char8_t*);
|
||||
|
||||
@@ -30,7 +30,7 @@ inline int add3(int x) {
|
||||
// CHECK: {{![0-9]+}} = distinct !DIGlobalVariable(
|
||||
// CHECK-SAME: name: "var"
|
||||
// CHECK-SAME: templateParams: {{![0-9]+}}
|
||||
// CHECK: !DITemplateTypeParameter(name: "P", type: {{![0-9]+}})
|
||||
// CHECK: !DITemplateTypeParameter(name: "T", type: {{![0-9]+}})
|
||||
// CHECK: {{![0-9]+}} = distinct !DIGlobalVariable(
|
||||
// CHECK-SAME: name: "varray"
|
||||
// CHECK-SAME: templateParams: {{![0-9]+}}
|
||||
|
||||
17
clang/test/CodeGenCXX/debug-info-var-template-partial.cpp
Normal file
17
clang/test/CodeGenCXX/debug-info-var-template-partial.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
// RUN: %clang_cc1 -emit-llvm -triple x86_64-linux-gnu %s -o - -debug-info-kind=limited | FileCheck %s
|
||||
|
||||
template <typename LHS, typename RHS> constexpr bool is_same_v = false;
|
||||
template <typename T> constexpr bool is_same_v<T, T> = true;
|
||||
|
||||
template constexpr bool is_same_v<int, int>;
|
||||
static_assert(is_same_v<int, int>, "should get partial spec");
|
||||
|
||||
// Note that the template arguments for the instantiated variable use the
|
||||
// parameter names from the primary template. The partial specialization might
|
||||
// not have enough parameters.
|
||||
|
||||
// CHECK: distinct !DIGlobalVariable(name: "is_same_v", linkageName: "_ZL9is_same_vIiiE", {{.*}} templateParams: ![[PARAMS:[0-9]+]])
|
||||
// CHECK: ![[PARAMS]] = !{![[LHS:[0-9]+]], ![[RHS:[0-9]+]]}
|
||||
// CHECK: ![[LHS]] = !DITemplateTypeParameter(name: "LHS", type: ![[INT:[0-9]+]])
|
||||
// CHECK: ![[INT]] = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
|
||||
// CHECK: ![[RHS]] = !DITemplateTypeParameter(name: "RHS", type: ![[INT]])
|
||||
@@ -446,3 +446,8 @@
|
||||
// PTHREAD-NOT: _POSIX_THREADS
|
||||
// PTHREAD: _REENTRANT
|
||||
// PTHREAD-NOT: _POSIX_THREADS
|
||||
|
||||
// Check PowerPC for Secure PLT
|
||||
// RUN: %clang -target powerpc-unknown-netbsd -### -c %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=POWERPC-SECUREPLT %s
|
||||
// POWERPC-SECUREPLT: "-target-feature" "+secure-plt"
|
||||
|
||||
@@ -234,6 +234,31 @@ int DwarfInstructions<A, R>::stepWithDwarf(A &addressSpace, pint_t pc,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(_LIBUNWIND_TARGET_PPC64)
|
||||
#define PPC64_ELFV1_R2_LOAD_INST_ENCODING 0xe8410028u // ld r2,40(r1)
|
||||
#define PPC64_ELFV1_R2_OFFSET 40
|
||||
#define PPC64_ELFV2_R2_LOAD_INST_ENCODING 0xe8410018u // ld r2,24(r1)
|
||||
#define PPC64_ELFV2_R2_OFFSET 24
|
||||
// If the instruction at return address is a TOC (r2) restore,
|
||||
// then r2 was saved and needs to be restored.
|
||||
// ELFv2 ABI specifies that the TOC Pointer must be saved at SP + 24,
|
||||
// while in ELFv1 ABI it is saved at SP + 40.
|
||||
if (R::getArch() == REGISTERS_PPC64 && returnAddress != 0) {
|
||||
pint_t sp = newRegisters.getRegister(UNW_REG_SP);
|
||||
pint_t r2 = 0;
|
||||
switch (addressSpace.get32(returnAddress)) {
|
||||
case PPC64_ELFV1_R2_LOAD_INST_ENCODING:
|
||||
r2 = addressSpace.get64(sp + PPC64_ELFV1_R2_OFFSET);
|
||||
break;
|
||||
case PPC64_ELFV2_R2_LOAD_INST_ENCODING:
|
||||
r2 = addressSpace.get64(sp + PPC64_ELFV2_R2_OFFSET);
|
||||
break;
|
||||
}
|
||||
if (r2)
|
||||
newRegisters.setRegister(UNW_PPC64_R2, r2);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Return address is address after call site instruction, so setting IP to
|
||||
// that does simualates a return.
|
||||
newRegisters.setIP(returnAddress);
|
||||
|
||||
@@ -35,6 +35,20 @@
|
||||
#define SEPARATOR ;
|
||||
#endif
|
||||
|
||||
#if defined(__powerpc64__) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
|
||||
#define PPC64_OPD1 .section .opd,"aw",@progbits SEPARATOR
|
||||
#define PPC64_OPD2 SEPARATOR \
|
||||
.p2align 3 SEPARATOR \
|
||||
.quad .Lfunc_begin0 SEPARATOR \
|
||||
.quad .TOC.@tocbase SEPARATOR \
|
||||
.quad 0 SEPARATOR \
|
||||
.text SEPARATOR \
|
||||
.Lfunc_begin0:
|
||||
#else
|
||||
#define PPC64_OPD1
|
||||
#define PPC64_OPD2
|
||||
#endif
|
||||
|
||||
#define GLUE2(a, b) a ## b
|
||||
#define GLUE(a, b) GLUE2(a, b)
|
||||
#define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name)
|
||||
@@ -95,13 +109,17 @@
|
||||
.globl SYMBOL_NAME(name) SEPARATOR \
|
||||
EXPORT_SYMBOL(name) SEPARATOR \
|
||||
SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \
|
||||
SYMBOL_NAME(name):
|
||||
PPC64_OPD1 \
|
||||
SYMBOL_NAME(name): \
|
||||
PPC64_OPD2
|
||||
|
||||
#define DEFINE_LIBUNWIND_PRIVATE_FUNCTION(name) \
|
||||
.globl SYMBOL_NAME(name) SEPARATOR \
|
||||
HIDDEN_SYMBOL(SYMBOL_NAME(name)) SEPARATOR \
|
||||
SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR \
|
||||
SYMBOL_NAME(name):
|
||||
PPC64_OPD1 \
|
||||
SYMBOL_NAME(name): \
|
||||
PPC64_OPD2
|
||||
|
||||
#if defined(__arm__)
|
||||
#if !defined(__ARM_ARCH)
|
||||
|
||||
@@ -23,6 +23,9 @@ config.suffixes = ['.cpp', '.s']
|
||||
# test_source_root: The root path where tests are located.
|
||||
config.test_source_root = os.path.dirname(__file__)
|
||||
|
||||
# needed to test libunwind with code that throws exceptions
|
||||
config.enable_exceptions = True
|
||||
|
||||
# Infer the libcxx_test_source_root for configuration import.
|
||||
# If libcxx_source_root isn't specified in the config, assume that the libcxx
|
||||
# and libunwind source directories are sibling directories.
|
||||
|
||||
@@ -757,7 +757,10 @@ bool PPC64::needsThunk(RelExpr Expr, RelType Type, const InputFile *File,
|
||||
|
||||
// If the offset exceeds the range of the branch type then it will need
|
||||
// a range-extending thunk.
|
||||
return !inBranchRange(Type, BranchAddr, S.getVA());
|
||||
// See the comment in getRelocTargetVA() about R_PPC64_CALL.
|
||||
return !inBranchRange(Type, BranchAddr,
|
||||
S.getVA() +
|
||||
getPPC64GlobalEntryToLocalEntryOffset(S.StOther));
|
||||
}
|
||||
|
||||
uint32_t PPC64::getThunkSectionSpacing() const {
|
||||
|
||||
30
lld/test/ELF/ppc64-long-branch-localentry-offset.s
Normal file
30
lld/test/ELF/ppc64-long-branch-localentry-offset.s
Normal file
@@ -0,0 +1,30 @@
|
||||
# REQUIRES: ppc
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=ppc64le %s -o %t.o
|
||||
# RUN: ld.lld %t.o -o %t
|
||||
# RUN: llvm-nm %t | FileCheck %s
|
||||
|
||||
# CHECK-DAG: 0000000010010000 t __long_branch_callee
|
||||
# CHECK-DAG: 0000000010010010 T _start
|
||||
# CHECK-DAG: 0000000012010008 T callee
|
||||
|
||||
# The bl instruction jumps to the local entry. The distance requires a long branch stub:
|
||||
# localentry(callee) - _start = 0x12010008+8 - 0x10010010 = 0x2000000
|
||||
|
||||
# We used to compute globalentry(callee) - _start and caused a "R_PPC64_REL24
|
||||
# out of range" error because we didn't create the stub.
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
bl callee
|
||||
|
||||
.space 0x1fffff4
|
||||
|
||||
.globl callee
|
||||
callee:
|
||||
.Lgep0:
|
||||
addis 2, 12, .TOC.-.Lgep0@ha
|
||||
addi 2, 2, .TOC.-.Lgep0@l
|
||||
.Llep0:
|
||||
.localentry callee, .Llep0-.Lgep0
|
||||
blr
|
||||
@@ -1,3 +1,4 @@
|
||||
REQUIRES: python
|
||||
RUN: %build %p/Inputs/hello.cpp -o %t
|
||||
RUN: %lldb %t -s %p/Inputs/convenience.in -o quit | FileCheck %s
|
||||
|
||||
|
||||
@@ -73,3 +73,6 @@ for i in ['module-cache-clang', 'module-cache-lldb']:
|
||||
if os.path.isdir(cachedir):
|
||||
print("Deleting module cache at %s."%cachedir)
|
||||
shutil.rmtree(cachedir)
|
||||
|
||||
if not config.lldb_disable_python:
|
||||
config.available_features.add('python')
|
||||
|
||||
@@ -364,7 +364,7 @@ static inline void __kmp_acquire_atomic_lock(kmp_atomic_lock_t *lck,
|
||||
#if OMPT_SUPPORT && OMPT_OPTIONAL
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_atomic, 0, kmp_mutex_impl_queuing, (ompt_wait_id_t)lck,
|
||||
ompt_mutex_atomic, 0, kmp_mutex_impl_queuing, (ompt_wait_id_t)(uintptr_t)lck,
|
||||
OMPT_GET_RETURN_ADDRESS(0));
|
||||
}
|
||||
#endif
|
||||
@@ -374,7 +374,7 @@ static inline void __kmp_acquire_atomic_lock(kmp_atomic_lock_t *lck,
|
||||
#if OMPT_SUPPORT && OMPT_OPTIONAL
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_atomic, (ompt_wait_id_t)lck, OMPT_GET_RETURN_ADDRESS(0));
|
||||
ompt_mutex_atomic, (ompt_wait_id_t)(uintptr_t)lck, OMPT_GET_RETURN_ADDRESS(0));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -390,7 +390,7 @@ static inline void __kmp_release_atomic_lock(kmp_atomic_lock_t *lck,
|
||||
#if OMPT_SUPPORT && OMPT_OPTIONAL
|
||||
if (ompt_enabled.ompt_callback_mutex_released) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_released)(
|
||||
ompt_mutex_atomic, (ompt_wait_id_t)lck, OMPT_GET_RETURN_ADDRESS(0));
|
||||
ompt_mutex_atomic, (ompt_wait_id_t)(uintptr_t)lck, OMPT_GET_RETURN_ADDRESS(0));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -848,7 +848,7 @@ void __kmpc_ordered(ident_t *loc, kmp_int32 gtid) {
|
||||
if (ompt_enabled.enabled) {
|
||||
OMPT_STORE_RETURN_ADDRESS(gtid);
|
||||
team = __kmp_team_from_gtid(gtid);
|
||||
lck = (ompt_wait_id_t)&team->t.t_ordered.dt.t_value;
|
||||
lck = (ompt_wait_id_t)(uintptr_t)&team->t.t_ordered.dt.t_value;
|
||||
/* OMPT state update */
|
||||
th->th.ompt_thread_info.wait_id = lck;
|
||||
th->th.ompt_thread_info.state = ompt_state_wait_ordered;
|
||||
@@ -857,8 +857,8 @@ void __kmpc_ordered(ident_t *loc, kmp_int32 gtid) {
|
||||
codeptr_ra = OMPT_LOAD_RETURN_ADDRESS(gtid);
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_ordered, omp_lock_hint_none, kmp_mutex_impl_spin,
|
||||
(ompt_wait_id_t)lck, codeptr_ra);
|
||||
ompt_mutex_ordered, omp_lock_hint_none, kmp_mutex_impl_spin, lck,
|
||||
codeptr_ra);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -877,7 +877,7 @@ void __kmpc_ordered(ident_t *loc, kmp_int32 gtid) {
|
||||
/* OMPT event callback */
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_ordered, (ompt_wait_id_t)lck, codeptr_ra);
|
||||
ompt_mutex_ordered, (ompt_wait_id_t)(uintptr_t)lck, codeptr_ra);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -917,7 +917,8 @@ void __kmpc_end_ordered(ident_t *loc, kmp_int32 gtid) {
|
||||
if (ompt_enabled.ompt_callback_mutex_released) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_released)(
|
||||
ompt_mutex_ordered,
|
||||
(ompt_wait_id_t)&__kmp_team_from_gtid(gtid)->t.t_ordered.dt.t_value,
|
||||
(ompt_wait_id_t)(uintptr_t)&__kmp_team_from_gtid(gtid)
|
||||
->t.t_ordered.dt.t_value,
|
||||
OMPT_LOAD_RETURN_ADDRESS(gtid));
|
||||
}
|
||||
#endif
|
||||
@@ -1188,7 +1189,7 @@ void __kmpc_critical(ident_t *loc, kmp_int32 global_tid,
|
||||
ti = __kmp_threads[global_tid]->th.ompt_thread_info;
|
||||
/* OMPT state update */
|
||||
prev_state = ti.state;
|
||||
ti.wait_id = (ompt_wait_id_t)lck;
|
||||
ti.wait_id = (ompt_wait_id_t)(uintptr_t)lck;
|
||||
ti.state = ompt_state_wait_critical;
|
||||
|
||||
/* OMPT event callback */
|
||||
@@ -1196,7 +1197,7 @@ void __kmpc_critical(ident_t *loc, kmp_int32 global_tid,
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_critical, omp_lock_hint_none, __ompt_get_mutex_impl_type(),
|
||||
(ompt_wait_id_t)crit, codeptr_ra);
|
||||
(ompt_wait_id_t)(uintptr_t)lck, codeptr_ra);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1216,7 +1217,7 @@ void __kmpc_critical(ident_t *loc, kmp_int32 global_tid,
|
||||
/* OMPT event callback */
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_critical, (ompt_wait_id_t)crit, codeptr_ra);
|
||||
ompt_mutex_critical, (ompt_wait_id_t)(uintptr_t)lck, codeptr_ra);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1402,14 +1403,15 @@ void __kmpc_critical_with_hint(ident_t *loc, kmp_int32 global_tid,
|
||||
ti = __kmp_threads[global_tid]->th.ompt_thread_info;
|
||||
/* OMPT state update */
|
||||
prev_state = ti.state;
|
||||
ti.wait_id = (ompt_wait_id_t)lck;
|
||||
ti.wait_id = (ompt_wait_id_t)(uintptr_t)lck;
|
||||
ti.state = ompt_state_wait_critical;
|
||||
|
||||
/* OMPT event callback */
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_critical, (unsigned int)hint,
|
||||
__ompt_get_mutex_impl_type(crit), (ompt_wait_id_t)crit, codeptr);
|
||||
__ompt_get_mutex_impl_type(crit), (ompt_wait_id_t)(uintptr_t)lck,
|
||||
codeptr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1440,14 +1442,15 @@ void __kmpc_critical_with_hint(ident_t *loc, kmp_int32 global_tid,
|
||||
ti = __kmp_threads[global_tid]->th.ompt_thread_info;
|
||||
/* OMPT state update */
|
||||
prev_state = ti.state;
|
||||
ti.wait_id = (ompt_wait_id_t)lck;
|
||||
ti.wait_id = (ompt_wait_id_t)(uintptr_t)lck;
|
||||
ti.state = ompt_state_wait_critical;
|
||||
|
||||
/* OMPT event callback */
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_critical, (unsigned int)hint,
|
||||
__ompt_get_mutex_impl_type(0, ilk), (ompt_wait_id_t)crit, codeptr);
|
||||
__ompt_get_mutex_impl_type(0, ilk), (ompt_wait_id_t)(uintptr_t)lck,
|
||||
codeptr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1467,7 +1470,7 @@ void __kmpc_critical_with_hint(ident_t *loc, kmp_int32 global_tid,
|
||||
/* OMPT event callback */
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_critical, (ompt_wait_id_t)crit, codeptr);
|
||||
ompt_mutex_critical, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1565,7 +1568,8 @@ void __kmpc_end_critical(ident_t *loc, kmp_int32 global_tid,
|
||||
OMPT_STORE_RETURN_ADDRESS(global_tid);
|
||||
if (ompt_enabled.ompt_callback_mutex_released) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_released)(
|
||||
ompt_mutex_critical, (ompt_wait_id_t)crit, OMPT_LOAD_RETURN_ADDRESS(0));
|
||||
ompt_mutex_critical, (ompt_wait_id_t)(uintptr_t)lck,
|
||||
OMPT_LOAD_RETURN_ADDRESS(0));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2189,8 +2193,8 @@ void __kmpc_init_lock_with_hint(ident_t *loc, kmp_int32 gtid, void **user_lock,
|
||||
if (ompt_enabled.ompt_callback_lock_init) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_init)(
|
||||
ompt_mutex_lock, (omp_lock_hint_t)hint,
|
||||
__ompt_get_mutex_impl_type(user_lock), (ompt_wait_id_t)user_lock,
|
||||
codeptr);
|
||||
__ompt_get_mutex_impl_type(user_lock),
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -2213,8 +2217,8 @@ void __kmpc_init_nest_lock_with_hint(ident_t *loc, kmp_int32 gtid,
|
||||
if (ompt_enabled.ompt_callback_lock_init) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_init)(
|
||||
ompt_mutex_nest_lock, (omp_lock_hint_t)hint,
|
||||
__ompt_get_mutex_impl_type(user_lock), (ompt_wait_id_t)user_lock,
|
||||
codeptr);
|
||||
__ompt_get_mutex_impl_type(user_lock),
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -2239,8 +2243,8 @@ void __kmpc_init_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_lock_init) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_init)(
|
||||
ompt_mutex_lock, omp_lock_hint_none,
|
||||
__ompt_get_mutex_impl_type(user_lock), (ompt_wait_id_t)user_lock,
|
||||
codeptr);
|
||||
__ompt_get_mutex_impl_type(user_lock),
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2282,7 +2286,7 @@ void __kmpc_init_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_lock_init) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_init)(
|
||||
ompt_mutex_lock, omp_lock_hint_none, __ompt_get_mutex_impl_type(),
|
||||
(ompt_wait_id_t)user_lock, codeptr);
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2311,8 +2315,8 @@ void __kmpc_init_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_lock_init) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_init)(
|
||||
ompt_mutex_nest_lock, omp_lock_hint_none,
|
||||
__ompt_get_mutex_impl_type(user_lock), (ompt_wait_id_t)user_lock,
|
||||
codeptr);
|
||||
__ompt_get_mutex_impl_type(user_lock),
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2357,7 +2361,7 @@ void __kmpc_init_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_lock_init) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_init)(
|
||||
ompt_mutex_nest_lock, omp_lock_hint_none, __ompt_get_mutex_impl_type(),
|
||||
(ompt_wait_id_t)user_lock, codeptr);
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2393,7 +2397,7 @@ void __kmpc_destroy_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
lck = (kmp_user_lock_p)user_lock;
|
||||
}
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_destroy)(
|
||||
ompt_mutex_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_lock, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
KMP_D_LOCK_FUNC(user_lock, destroy)((kmp_dyna_lock_t *)user_lock);
|
||||
@@ -2421,7 +2425,7 @@ void __kmpc_destroy_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
codeptr = OMPT_GET_RETURN_ADDRESS(0);
|
||||
if (ompt_enabled.ompt_callback_lock_destroy) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_destroy)(
|
||||
ompt_mutex_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_lock, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2461,7 +2465,7 @@ void __kmpc_destroy_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
codeptr = OMPT_GET_RETURN_ADDRESS(0);
|
||||
if (ompt_enabled.ompt_callback_lock_destroy) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_destroy)(
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
KMP_D_LOCK_FUNC(user_lock, destroy)((kmp_dyna_lock_t *)user_lock);
|
||||
@@ -2493,7 +2497,7 @@ void __kmpc_destroy_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
codeptr = OMPT_GET_RETURN_ADDRESS(0);
|
||||
if (ompt_enabled.ompt_callback_lock_destroy) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_lock_destroy)(
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2538,8 +2542,8 @@ void __kmpc_set_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_lock, omp_lock_hint_none,
|
||||
__ompt_get_mutex_impl_type(user_lock), (ompt_wait_id_t)user_lock,
|
||||
codeptr);
|
||||
__ompt_get_mutex_impl_type(user_lock),
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
#if KMP_USE_INLINED_TAS
|
||||
@@ -2560,7 +2564,7 @@ void __kmpc_set_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
#if OMPT_SUPPORT && OMPT_OPTIONAL
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_lock, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2593,7 +2597,7 @@ void __kmpc_set_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_lock, omp_lock_hint_none, __ompt_get_mutex_impl_type(),
|
||||
(ompt_wait_id_t)lck, codeptr);
|
||||
(ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2606,7 +2610,7 @@ void __kmpc_set_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
#if OMPT_SUPPORT && OMPT_OPTIONAL
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_lock, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_lock, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2628,8 +2632,8 @@ void __kmpc_set_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_nest_lock, omp_lock_hint_none,
|
||||
__ompt_get_mutex_impl_type(user_lock), (ompt_wait_id_t)user_lock,
|
||||
codeptr);
|
||||
__ompt_get_mutex_impl_type(user_lock),
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -2646,13 +2650,14 @@ void __kmpc_set_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
// lock_first
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)(uintptr_t)user_lock,
|
||||
codeptr);
|
||||
}
|
||||
} else {
|
||||
if (ompt_enabled.ompt_callback_nest_lock) {
|
||||
// lock_next
|
||||
ompt_callbacks.ompt_callback(ompt_callback_nest_lock)(
|
||||
ompt_scope_begin, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_scope_begin, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2690,7 +2695,8 @@ void __kmpc_set_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_nest_lock, omp_lock_hint_none,
|
||||
__ompt_get_mutex_impl_type(), (ompt_wait_id_t)lck, codeptr);
|
||||
__ompt_get_mutex_impl_type(), (ompt_wait_id_t)(uintptr_t)lck,
|
||||
codeptr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -2707,13 +2713,13 @@ void __kmpc_set_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
// lock_first
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
} else {
|
||||
if (ompt_enabled.ompt_callback_nest_lock) {
|
||||
// lock_next
|
||||
ompt_callbacks.ompt_callback(ompt_callback_nest_lock)(
|
||||
ompt_scope_begin, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_scope_begin, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2749,7 +2755,7 @@ void __kmpc_unset_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
codeptr = OMPT_GET_RETURN_ADDRESS(0);
|
||||
if (ompt_enabled.ompt_callback_mutex_released) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_released)(
|
||||
ompt_mutex_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_lock, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2778,7 +2784,7 @@ void __kmpc_unset_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
codeptr = OMPT_GET_RETURN_ADDRESS(0);
|
||||
if (ompt_enabled.ompt_callback_mutex_released) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_released)(
|
||||
ompt_mutex_lock, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_lock, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2810,7 +2816,7 @@ void __kmpc_unset_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
codeptr = OMPT_GET_RETURN_ADDRESS(0);
|
||||
if (ompt_enabled.ompt_callback_mutex_released) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_released)(
|
||||
ompt_mutex_lock, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_lock, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2838,12 +2844,13 @@ void __kmpc_unset_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_released) {
|
||||
// release_lock_last
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_released)(
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)(uintptr_t)user_lock,
|
||||
codeptr);
|
||||
}
|
||||
} else if (ompt_enabled.ompt_callback_nest_lock) {
|
||||
// release_lock_prev
|
||||
ompt_callbacks.ompt_callback(ompt_callback_nest_lock)(
|
||||
ompt_scope_end, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_scope_end, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -2887,12 +2894,12 @@ void __kmpc_unset_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_released) {
|
||||
// release_lock_last
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_released)(
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
} else if (ompt_enabled.ompt_callback_nest_lock) {
|
||||
// release_lock_previous
|
||||
ompt_callbacks.ompt_callback(ompt_callback_nest_lock)(
|
||||
ompt_mutex_scope_end, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_scope_end, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -2929,12 +2936,12 @@ void __kmpc_unset_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_released) {
|
||||
// release_lock_last
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_released)(
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
} else if (ompt_enabled.ompt_callback_nest_lock) {
|
||||
// release_lock_previous
|
||||
ompt_callbacks.ompt_callback(ompt_callback_nest_lock)(
|
||||
ompt_mutex_scope_end, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_scope_end, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -2960,8 +2967,8 @@ int __kmpc_test_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_lock, omp_lock_hint_none,
|
||||
__ompt_get_mutex_impl_type(user_lock), (ompt_wait_id_t)user_lock,
|
||||
codeptr);
|
||||
__ompt_get_mutex_impl_type(user_lock),
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
#if KMP_USE_INLINED_TAS
|
||||
@@ -2983,7 +2990,7 @@ int __kmpc_test_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
#if OMPT_SUPPORT && OMPT_OPTIONAL
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_lock, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
return FTN_TRUE;
|
||||
@@ -3024,7 +3031,7 @@ int __kmpc_test_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_lock, omp_lock_hint_none, __ompt_get_mutex_impl_type(),
|
||||
(ompt_wait_id_t)lck, codeptr);
|
||||
(ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -3039,7 +3046,7 @@ int __kmpc_test_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
#if OMPT_SUPPORT && OMPT_OPTIONAL
|
||||
if (rc && ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_lock, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_lock, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -3065,8 +3072,8 @@ int __kmpc_test_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_nest_lock, omp_lock_hint_none,
|
||||
__ompt_get_mutex_impl_type(user_lock), (ompt_wait_id_t)user_lock,
|
||||
codeptr);
|
||||
__ompt_get_mutex_impl_type(user_lock),
|
||||
(ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
#endif
|
||||
rc = KMP_D_LOCK_FUNC(user_lock, test)((kmp_dyna_lock_t *)user_lock, gtid);
|
||||
@@ -3083,13 +3090,14 @@ int __kmpc_test_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
// lock_first
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)(uintptr_t)user_lock,
|
||||
codeptr);
|
||||
}
|
||||
} else {
|
||||
if (ompt_enabled.ompt_callback_nest_lock) {
|
||||
// lock_next
|
||||
ompt_callbacks.ompt_callback(ompt_callback_nest_lock)(
|
||||
ompt_scope_begin, (ompt_wait_id_t)user_lock, codeptr);
|
||||
ompt_scope_begin, (ompt_wait_id_t)(uintptr_t)user_lock, codeptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3130,7 +3138,8 @@ int __kmpc_test_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
ompt_enabled.ompt_callback_mutex_acquire) {
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquire)(
|
||||
ompt_mutex_nest_lock, omp_lock_hint_none,
|
||||
__ompt_get_mutex_impl_type(), (ompt_wait_id_t)lck, codeptr);
|
||||
__ompt_get_mutex_impl_type(), (ompt_wait_id_t)(uintptr_t)lck,
|
||||
codeptr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -3148,13 +3157,13 @@ int __kmpc_test_nest_lock(ident_t *loc, kmp_int32 gtid, void **user_lock) {
|
||||
if (ompt_enabled.ompt_callback_mutex_acquired) {
|
||||
// lock_first
|
||||
ompt_callbacks.ompt_callback(ompt_callback_mutex_acquired)(
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_nest_lock, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
} else {
|
||||
if (ompt_enabled.ompt_callback_nest_lock) {
|
||||
// lock_next
|
||||
ompt_callbacks.ompt_callback(ompt_callback_nest_lock)(
|
||||
ompt_mutex_scope_begin, (ompt_wait_id_t)lck, codeptr);
|
||||
ompt_mutex_scope_begin, (ompt_wait_id_t)(uintptr_t)lck, codeptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +211,7 @@ ompt_data_t *__ompt_get_thread_data_internal() {
|
||||
void __ompt_thread_assign_wait_id(void *variable) {
|
||||
kmp_info_t *ti = ompt_get_thread();
|
||||
|
||||
ti->th.ompt_thread_info.wait_id = (ompt_wait_id_t)variable;
|
||||
ti->th.ompt_thread_info.wait_id = (ompt_wait_id_t)(uintptr_t)variable;
|
||||
}
|
||||
|
||||
int __ompt_get_state_internal(ompt_wait_id_t *omp_wait_id) {
|
||||
|
||||
@@ -10,7 +10,7 @@ int main()
|
||||
print_ids(0);
|
||||
|
||||
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)(uintptr_t) &lock);
|
||||
omp_init_lock(&lock);
|
||||
print_fuzzy_address(1);
|
||||
omp_set_lock(&lock);
|
||||
|
||||
@@ -10,7 +10,7 @@ int main()
|
||||
print_ids(0);
|
||||
|
||||
omp_nest_lock_t nest_lock;
|
||||
printf("%" PRIu64 ": &nest_lock: %lli\n", ompt_get_thread_data()->value, (long long) &nest_lock);
|
||||
printf("%" PRIu64 ": &nest_lock: %lli\n", ompt_get_thread_data()->value, (ompt_wait_id_t)(uintptr_t) &nest_lock);
|
||||
omp_init_nest_lock(&nest_lock);
|
||||
print_fuzzy_address(1);
|
||||
omp_set_nest_lock(&nest_lock);
|
||||
|
||||
Reference in New Issue
Block a user