std::string suffices for Init* argument?

Hi Jakob,

How is `FieldName`, which is a std::string, being passed as the third
argument to SetValue on line 1848 of TGParser.cpp, which is declared
as being an Init*? The nearly identical (FIXME) codepath in
ParseDeclaration immediately puts the string into a StringInit, which
makes sense, but how on earth is the std::string being passed in? This
is really freaking me out.

-- Sean Silva

See TGParser.h:

  bool SetValue(Record *TheRec, SMLoc Loc, Init *ValName,
                const std::vector<unsigned> &BitList, Init *V);
  bool SetValue(Record *TheRec, SMLoc Loc, const std::string &ValName,
                const std::vector<unsigned> &BitList, Init *V) {
    return SetValue(TheRec, Loc, StringInit::get(ValName), BitList, V);
  }

:wink:

/jakob

D'oh.

Thanks.

-- Sean Silva