Under -fms-extensions __unaligned is a type-qualifier that can be applied to a non-static member function declaration.
This causes an assertion when mangling the name under Itanium, where that qualifier is not mangled.
This patch justs makes the minimal change to avoid the crash and avoid mangling __unaligned.
The test just makes sure the clash is actually detected.
Do you know why clang doesn't error out until it reaches IRGen when compiling this test? I found it interesting that Sema detects the redeclaration and errors out when the function is marked "restrict", but doesn't do so when it's marked "unaligned".