`Message()` lambda uses `Reason.Details` as an input parameter for `llvm::formatv()`, but `Reason` in `Message()` is a local object. Return value of `llvm::formatv()` contains references to its input arguments, thus `Message()` returns an object which contains a reference to `Details` field of the local object `Reason`. This patch fixes this behavior by passing `Reason` as a reference to `Message()` to ensure that return value of `Message()` contains references to alive object and also prevents copying of `InvalidName` structure at passing it to `makeError()`. Provided test passes on Linux+GCC with or without this patch, but fails on Windows+VisualStudio without this patch. Reviewed By: sammccall Differential Revision: https://reviews.llvm.org/D115959 |
||
|---|---|---|
| .. | ||
| tweaks | ||
| Rename.cpp | ||
| Rename.h | ||
| Tweak.cpp | ||
| Tweak.h | ||