message: PassRegistation: use overloads instead of a default argument
  Windows build is not happy trying to convert a lambda into a constant reference
  to a function in default arguments of the PassRegistration constructor.  Define
  two overloaded constructors instead and construct the lambda as a variable in
  the constructor body.
diff: @@ -114,11 +114,13 @@ void registerPass(StringRef arg, StringRef description, const PassID *passID,
  /// // At namespace scope.
  /// static PassRegistration<MyPass> Unused("unused", "Unused pass");
  template <typename ConcretePass> struct PassRegistration {
  - PassRegistration(
  - StringRef arg, StringRef description,
  - const PassAllocatorFunction &constructor = [] {
  - return new ConcretePass();
  - }) {
  + PassRegistration(StringRef arg, StringRef description,
  + const PassAllocatorFunction &constructor) {
  + registerPass(arg, description, PassID::getID<ConcretePass>(), constructor);
  + }
  +
  + PassRegistration(StringRef arg, StringRef description) {
  + PassAllocatorFunction constructor = [] { return new ConcretePass(); };
  registerPass(arg, description, PassID::getID<ConcretePass>(), constructor);
  }
  };
  