awarzynski added inline comments.

================
Comment at: flang/lib/Frontend/FrontendActions.cpp:561
+      std::make_unique<llvm::TargetLibraryInfoImpl>(triple);
+  CodeGenPasses.add(new llvm::TargetLibraryInfoWrapperPass(*TLII));
+
----------------
schweitz wrote:
> Got jumbled around somehow. TLII is allocated at line 559-560. Since you are 
> checking allocations with assert in other places, why not here? TLII is 
> immediately dereferenced on line 561, without an assertion check.
Thanks for clarifying. One `assert` coming this way :)


================
Comment at: flang/lib/Optimizer/Support/FIRContext.cpp:19
 
-static constexpr const char *tripleName = "fir.triple";
+static constexpr const char *tripleName = "llvm.target_triple";
 
----------------
schweitz wrote:
> awarzynski wrote:
> > schweitz wrote:
> > > Why is this being changed? This is a FIR specific attribute.
> > The driver assumes that when compiling a Fortran file, a valid triple will 
> > be present in the generated LLVM IR file. Currently, `fir.tiple` is just 
> > dropped and the generated LLVM IR module contains no triple. For 
> > `-emit-obj`/`-S` to work, we do need to make sure that a valid triple is 
> > actually there.
> > 
> > We could add logic to translate `fir.triple` to `llvm.target_triple` (in 
> > the FIR --> LLVM MLIR translation layer), but why bother if it's not used 
> > anywhere? Instead, Flang could use `llvm.target_triple` from the very 
> > beginning. This way, no extra functionality is needed (`llvm.target_triple` 
> > is preserved when translating from FIR to LLVM MLIR and then included in 
> > the generated LLVM IR module).
> > 
> > AFAIK, `fir-triple` is never used anywhere. In fact, it's already been 
> > removed from [[ 
> > https://github.com/flang-compiler/f18-llvm-project/blob/fir-dev/flang/lib/Optimizer/Support/FIRContext.cpp#L19
> >  | fir-dev ]].
> > 
> Thanks for the update. I'm glad to see MLIR decided to use my module 
> attribute trick here. :)
> 
> Given this, there is no reason to "block copy" the name of the attribute over 
> to FIR. Just use the `mlir::LLVM::LLVMDialect::getTargetTripleAttrName()` 
> method. The FIR attribute can then be retired and removed along with the 
> setter and getter.
I wasn't aware of `getTargetTripleAttrName`, thanks! I will use that instead.

 As for `setTargetTriple` and `getTargetTriple`, we'd need a bit more work to 
remove them. I suggest doing that in a separate patch.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D120568/new/

https://reviews.llvm.org/D120568

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to