jdoerfert added a comment. In D79675#2037484 <https://reviews.llvm.org/D79675#2037484>, @fghanim wrote:
> In D79675#2037314 <https://reviews.llvm.org/D79675#2037314>, @jdoerfert wrote: > > > I left some comments on the type stuff. The rest looks good. > > I think if you rebase the type stuff on D79739 > > <https://reviews.llvm.org/D79739> (which I can merge) we should only need > > to expand `initializeTypes` to make this work as expected. WDYT? > > > Currently, I implemented the changes relevant to me from that and made a > separate local commit prior to this one to make sure things work. > I build llvm locally, and so it take 6 - 8 hours, so when all patches are > accepted, I'll do a rebase, etc. in one go to make sure there are no problems. What takes 6-8h? Are you sure you don't want to merge parts that went through review as soon as possible? I mean, at least the type parts would be helpful. ================ Comment at: llvm/include/llvm/Frontend/OpenMP/OMPKinds.def:234 __OMP_RTL(__kmpc_critical, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy) -__OMP_RTL(__kmpc_critical_with_hint, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy, Int32) +__OMP_RTL(__kmpc_critical_with_hint, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy, IntPtrTy) __OMP_RTL(__kmpc_end_critical, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy) ---------------- fghanim wrote: > jdoerfert wrote: > > fghanim wrote: > > > jdoerfert wrote: > > > > fghanim wrote: > > > > > jdoerfert wrote: > > > > > > I think this was correct before: > > > > > > ``` > > > > > > KMP_EXPORT void __kmpc_critical_with_hint(ident_t *, kmp_int32 > > > > > > global_tid, kmp_critical_name *, uint32_t hint); > > > > > > ``` > > > > > Nop, it's supposed to be whatever `IntPtrTy` is in the frontend (i.e. > > > > > 32 for 32bit, 64 for 64bit). > > > > > > > > > > `IntPtrTy` is actually a union with `sizety` in `CodeGenModule` > > > > I'm confused. I copied the declaration above from the runtime. It > > > > doesn't contain an `IntPtrTy` or similar. I agree that `IntPtrTy` is > > > > machine dependent and we need your initializers. What I tried to say is > > > > that at least one declaration in the runtime has > > > > `__kmpc_critical_with_hint` with an int32 as last argument. That said, > > > > the runtime is not shy of incompatible declarations for functions. > > > I cannot speak for what's in the runtime. However, in clang, this > > > currently is defined to use `IntPtrTy`. If you go check, I have a todo in > > > the current implementation for critical to come back and fix it. > > That is just an existing bug in Clang. The runtime is consistent with the > > type and arguably it is the runtime we must match, not the other way around > > ;) > Apparently, this used to be `uintptr_t` in the runtime and was changed by > D51235 . It doesn't say why the change was made. > > Clang uses this in multiple places, which makes me think it may have been > intentional. So I suggest we go by the standard. Where can I find what does > the OMP standard say about how the signature of the runtime calls should look > like? This way I'll fix this one accordingly, and later we may go and make > sure that all the rest match up with the standard - where possible. This is not a standard function. It is a runtime function. I suspect it is a int32_t because enums default to `int` which is 32 bit on all interesting platforms. Should probably be a `int` but I would need to read up to confirm. Long story short, and as I said before, it is a bug in clang. The code here was correct. FWIW, we will soon replace clang's runtime function generation with these macros. That will happen in the next days I hope. ================ Comment at: llvm/lib/Frontend/OpenMP/OMPConstants.cpp:122 + } +} + ---------------- fghanim wrote: > jdoerfert wrote: > > fghanim wrote: > > > jdoerfert wrote: > > > > (I doubt we need the `initVoidPtr` function but if we do, the condition > > > > looks wrong) > > > Forgot to refractor when I changed names. > > > > > > Regarding `void*` , I am not sure how it is defined in fortran. That's > > > why I made it possible to initialize it separately. > > I see. Let's cross that bridge once we get to it. > Modified it a bit and removed usage from initialization. If fortran people > don't end using it, then we can remove it. Let's not add stuff that might be used. ================ Comment at: llvm/lib/Frontend/OpenMP/OMPConstants.cpp:69 void llvm::omp::types::initializeTypes(Module &M) { if (Void) ---------------- fghanim wrote: > jdoerfert wrote: > > Maybe we can/should take the IntPtr and SizeTy here so there is only a > > single call necessary that initializes all types. I fear "default" values > > are problematic. > > > > WDYT? > you mean pass it as a second argument? Sure, I would love that. I mean it's > fine with me either way. I originally wanted to do that. but then thought > maybe it is slightly better to explicitly initialize target specific data > types, to give initialize type a cleaner look ... maybe?! Yes, second (and third) argument. Given that every user has to initialize all the types we can just make it a single call. ================ Comment at: llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp:106 + initializeVoidPtrTy(VoidPtrTy); +} + ---------------- fghanim wrote: > jdoerfert wrote: > > I guess we can directly call the initialize functions, right? > > With an assert that SizeTy is set we can make sure users do it ;) > Sure, then again, I am just following in the stylistic footsteps of the > pioneers who started the OMPBuilder, who created an initialize for initialize > ;) > > On second thought, I think I will just create something like > `initializeTargetSpecificTypes()` sort of thing, and be done with it. instead > of having one for each type. Point taken, though I'm fine with criticizing my own design :) My suggestion now: merge everything into the `OpenMPIRBuilder::initialize` we already have. I'm also fine with removing this and letting users call (a single) `initializeTypes`, thought it is a bit harder to "know" that is needed. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D79675/new/ https://reviews.llvm.org/D79675 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits