[NewPM] Port Msan

Authored by philip.pfaffe on Jan 3 2019, 5:42 AM.


[NewPM] Port Msan

Keeping msan a function pass requires replacing the module level initialization:
That means, don't define a ctor function which calls __msan_init, instead just
declare the init function at the first access, and add that to the global ctors


  • Pull the actual sanitizer and the wrapper pass apart.
  • Add a newpm msan pass. The function pass inserts calls to runtime library functions, for which it inserts declarations as necessary.
  • Update tests.


  • There is one test that I dropped, because it specifically tested the definition of the ctor.

Reviewers: chandlerc, fedor.sergeev, leonardchan, vitalybuka

Subscribers: sdardis, nemanjai, javed.absar, hiraditya, kbarton, bollu, atanasyan, jsji

Differential Revision: https://reviews.llvm.org/D55647

llvm-svn: 350305