This has been long overdue, and is generally totally mechanical. It does break IR-Metadata compatibility, but we do that a lot at the moment :-)
In this form I'm taking no prisoners and simple reflow DIDescriptor::FlagLValueReference and FlagRValueReference to close the gap from removing the flag, but I could understand if someone rather wants to leave a hole in the enum.
Note: LLVM+CFE is rolled into one patch.
Commit message:
Move the IsIndirect flag from DIVariable into DIExpression. This is a much more natural place for this information to be, but there is also a more technical reason: The IsIndirect flag is used to mark a variable that is turned into a reference by virtue of the calling convention; this happends for example to aggregate return values. The inliner, for example, may actually need to undo this indirection to correctly represent the value in its new context. This is impossible to implement because the DIVariable can't be safely modified. We can however safely construct a new DIExpression on the fly.
Do we need MachineLocation::isIndirect anymore?
Hmm, I guess I do vaguely recall this being here before I added the other indirect flag... but I forget what it might be for, etc.