================
@@ -75,12 +76,14 @@ struct Builder {
   Builder(SmallVector<char, 0> &Symtab, StringTableBuilder &StrtabBuilder,
           BumpPtrAllocator &Alloc, const Triple &TT)
       : Symtab(Symtab), StrtabBuilder(StrtabBuilder), Saver(Alloc), TT(TT),
-        Libcalls(TT) {}
+        TLII(TT), TLI(TLII), Libcalls(TT) {}
 
   DenseMap<const Comdat *, int> ComdatMap;
   Mangler Mang;
   const Triple &TT;
 
+  TargetLibraryInfoImpl TLII;
+  TargetLibraryInfo TLI;
   // FIXME: This shouldn't be here.
   RTLIB::RuntimeLibcallsInfo Libcalls;
----------------
arsenm wrote:

This is kind of moving in the opposite and the same direction as I've been 
trying to go with RuntimeLibcallsInfo at the same time. 

I think that long term RuntimeLibcallsInfo and TargetLibraryInfo need to be 
merged into one analysis. I think the path of least resistance is to turn 
RuntimeLibcallsInfo into TargetLibraryInfo, which is most of my work in the 
last year has been towards. This is starting from the other direction, and 
treating TargetLibraryInfo more like RuntimeLibcallsInfo (most of my patches 
are adding RuntimeLibcallsInfo usage in places currently using 
TargetLibraryInfo, this is doing the opposite).

The fused analysis should separately be able to express which functions are 
callable, and which are known to have special semantics. That's the approximate 
distinction between the two today. The problem is the middle end optimizations 
consider TargetLibraryInfo only, and the backend mostly considers 
RuntimeLibcallsInfo. 

If we're going in this direction for this one particular area, the FIXME there 
applies to both of these (i.e., the future fused version). This specifically 
refers to turning the availability into a module analysis, not having a locally 
computed set of functions from the triple.

https://github.com/llvm/llvm-project/pull/164916
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to