================ @@ -3369,6 +3369,48 @@ SDValue PPCTargetLowering::LowerGlobalTLSAddressAIX(SDValue Op, bool Is64Bit = Subtarget.isPPC64(); bool HasAIXSmallLocalExecTLS = Subtarget.hasAIXSmallLocalExecTLS(); TLSModel::Model Model = getTargetMachine().getTLSModel(GV); + // Initialize heuristic setting lazily: + // (1) Use initial-exec for single TLS var reference within current function. + // (2) Use local-dynamic for multiple TLS var references within current func. + PPCFunctionInfo *FuncInfo = + DAG.getMachineFunction().getInfo<PPCFunctionInfo>(); + if (Subtarget.hasAIXShLibTLSModelHeuristic() && + !FuncInfo->isAIXFuncUseInitDone()) { + std::set<const GlobalValue *> TLSGV; + for (SDNode &Node : DAG.allnodes()) { ---------------- bzEq wrote:
One DAG is mapped to a single basic block, I notice your description is about whole function. So the size of `TLSGV` is smaller than what you really want to count. https://github.com/llvm/llvm-project/pull/84132 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits