This handles cases like this:
typedef int& IntRef; void mutate(IntRef); void f() { int x; mutate(x); }
where the param type is a sugared type (TypedefType) instead of a
reference type directly.
Note that another category of similar but different cases are already
handled properly before:
typedef int Int; void mutate(Int&); void f() { int x; mutate(x); }