[PATCH] D105491: [clang] Use i64 for the !srcloc metadata on asm IR nodes.

Simon Tatham via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 20 01:47:40 PDT 2021


simon_tatham added a comment.

I looked into this yesterday, and realised that I don't actually know what the use case //is// for emitting `!srcloc` metadata in an IR file.

It's more or less ignored by llc, as far as I can see: if there's a late-breaking error in the inline asm string, you just get a "note: !srcloc = <nnn>" alongside the main error.

And if the IR file is read back in by a second invocation of clang, then the frontend callback //does// get the !srcloc back from the IR, but it can't relate that to the original source code, because the new clang's SourceManager doesn't know anything about the C source files that the IR was made from. In the example test I just did by hand, the error message cites a location in the IR file that corresponds to the byte position of the error in the original C, which is more or less useless.

So I think this mechanism is only actually useful when the whole compilation is happening within a single invocation of clang, so that the !srcloc finds its way back to a SourceManager that still has all the actual source code in mind. As soon as IR files are exported and re-imported, the best we can hope for is "no crash".

But I can add a couple of tests along those lines for i32 and i64 versions of !srcloc, if that's helpful.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105491/new/

https://reviews.llvm.org/D105491



More information about the cfe-commits mailing list