This fixes a hole in the handling of devirtualized targets that were
local but need promoting due to devirtualization in another module. We
were not correctly referencing the promoted symbol in some cases. Make
sure the code that updates the name also looks at the ExportedGUIDs set
by utilizing a callback that checks all conditions (the callback
utilized by the internalization/promotion code).
Details
Diff Detail
- Repository
- rL LLVM
- Build Status
Buildable 38690 Build 38689: arc lint + arc unit
Event Timeline
lib/LTO/LTO.cpp | ||
---|---|---|
1335 | Maybe we could make this a separate function, it seems we are using similar checks in llvm/lib/LTO/ThinLTOCodeGenerator.cpp:528, |
lib/LTO/LTO.cpp | ||
---|---|---|
1335 | Do you mean the isExported lambda (ThinLTOCodeGenerator.cpp:528 is unrelated code at HEAD)? We use a call back in part because the different LTO APIs handle exported symbols differently. The ExportedGUIDs set here in the new API is set up differently than the GUIDPreservedSymbols in the old API. Also, the old LTO API doesn't currently do WPD. |
lib/LTO/LTO.cpp | ||
---|---|---|
1335 | oh sorry, i was referring to: https://github.com/llvm-mirror/llvm/blob/master/lib/LTO/ThinLTOCodeGenerator.cpp#L586. But i understood the point. thanks! |
Maybe we could make this a separate function, it seems we are using similar checks in llvm/lib/LTO/ThinLTOCodeGenerator.cpp:528,