The code for going up the macro arg expansion is duplicated in many places (and we need it for the analyzer as well, so I did not want to duplicate it two more times).
This patch is an NFC, so the semantics should remain the same.
I am still slightly confused as to why in half of the places getImmediateSpellingLoc is used, and getImmediateExpansionRange is used in the other half.
Does getImmediateMacroCallerLoc differ at all from getImmediateSpellingLoc?