[MS ABI] Refactor member pointer generation
authorDavid Majnemer <david.majnemer@gmail.com>
Tue, 23 Jun 2015 07:31:07 +0000 (07:31 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Tue, 23 Jun 2015 07:31:07 +0000 (07:31 +0000)
commit5ca193c333b8ef848eafcfe262d6d3dd5b3c16af
tree6decaed811dd5b55d487913c9cba9c8cab8a0c6a
parente2be95b55bc18628481d1230bfa42d167ba4463b
[MS ABI] Refactor member pointer generation

The MS ABI has very complicated member pointers.  Don't attempt to
synthesize the final member pointer ab ovo usque ad mala in one go.

Instead, start with a member pointer which points to the declaration in
question as-if it's decl context was the target class.  Then, utilize
our conversion logical to convert it to the target type.

This allows us to simplify how we think about member pointers because we
don't need to consider non-zero nv adjustments before we even generate
the member pointer.  Furthermore, it gives our adjustment logic more
exposure by utilizing it in a common path.

llvm-svn: 240383
clang/lib/CodeGen/MicrosoftCXXABI.cpp