Clang имеет SourceLocations для всех объявлений, но эта информация не преобразуется в LLVM IR, где выполняется ModulePass - за исключением отладочной информации , если включена информация об отладке или покрытие.Отладочная информация - лучшее усилие, но если вы не выполняли никаких других преобразований с тех пор, как clang испустил IR, то обычно это сработает.
Это намеренное проектное решение, обычно LLVM не должен обрабатывать систему инесистемные функции по-разному.Внутри lib / Transforms / Utils / SimplifyLibCalls.cpp есть исключение, которое оптимизируется на основе имен известных библиотечных функций.Что делает это безопасным, так это то, что пользователь LLVM будет знать, являются ли эти функции теми, которые определены языковым стандартом, и решит, применять эту оптимизацию или нет.