@@ -241,28 +241,34 @@ class HIPUndefinedFatBinSymbols {
241241
242242 bool isUndefined =
243243 FlagOrErr.get () & llvm::object::SymbolRef::SF_Undefined;
244+ bool isHidden = FlagOrErr.get () & llvm::object::SymbolRef::SF_Hidden;
244245 bool isFatBinSymbol = Name.starts_with (FatBinPrefix);
245246 bool isGPUBinHandleSymbol = Name.starts_with (GPUBinHandlePrefix);
246247
247- // Handling for defined symbols
248- if (! isUndefined) {
249- if (isFatBinSymbol) {
250- DefinedFatBinSymbols.insert (Name. str ());
251- FatBinSymbols.erase (Name.str ());
252- } else if (isGPUBinHandleSymbol) {
253- DefinedGPUBinHandleSymbols.insert (Name. str ());
254- GPUBinHandleSymbols. erase (Name. str ());
255- }
248+ // Add undefined symbols if they are not in the defined sets
249+ if (isUndefined) {
250+ if (isFatBinSymbol &&
251+ DefinedFatBinSymbols.find (Name) == DefinedFatBinSymbols. end ())
252+ FatBinSymbols.insert (Name.str ());
253+ else if (isGPUBinHandleSymbol &&
254+ DefinedGPUBinHandleSymbols.find (Name) ==
255+ DefinedGPUBinHandleSymbols. end ())
256+ GPUBinHandleSymbols. insert (Name. str ());
256257 continue ;
257258 }
258259
259- // Add undefined symbols if they are not in the defined sets
260- if (isFatBinSymbol &&
261- DefinedFatBinSymbols.find (Name) == DefinedFatBinSymbols.end ())
262- FatBinSymbols.insert (Name.str ());
263- else if (isGPUBinHandleSymbol && DefinedGPUBinHandleSymbols.find (Name) ==
264- DefinedGPUBinHandleSymbols.end ())
265- GPUBinHandleSymbols.insert (Name.str ());
260+ // Ignore hidden defined symbols
261+ if (isHidden)
262+ continue ;
263+
264+ // Handling for non-hidden defined symbols
265+ if (isFatBinSymbol) {
266+ DefinedFatBinSymbols.insert (Name.str ());
267+ FatBinSymbols.erase (Name.str ());
268+ } else if (isGPUBinHandleSymbol) {
269+ DefinedGPUBinHandleSymbols.insert (Name.str ());
270+ GPUBinHandleSymbols.erase (Name.str ());
271+ }
266272 }
267273 }
268274
0 commit comments