X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTableGen%2FStringMatcher.cpp;h=16681702d1d66cd9da597a813a8fe9508801d5ca;hb=13f5c5896dcc43a6a9815715c1f21e953c16d2f8;hp=0ce626d4b19ea2f4102b34a7a095adce6dad2ccd;hpb=f657da2e4896732f306a9e62261418112e7337ce;p=oota-llvm.git diff --git a/lib/TableGen/StringMatcher.cpp b/lib/TableGen/StringMatcher.cpp index 0ce626d4b19..16681702d1d 100644 --- a/lib/TableGen/StringMatcher.cpp +++ b/lib/TableGen/StringMatcher.cpp @@ -87,11 +87,11 @@ EmitStringMatcherForChar(const std::vector &Matches, << Matches[0]->first[CharNo] << "')\n"; OS << Indent << " break;\n"; } else { - // Do the comparison with if (Str.substr(1, 3) != "foo"). + // Do the comparison with if memcmp(Str.data()+1, "foo", 3). // FIXME: Need to escape general strings. - OS << Indent << "if (" << StrVariableName << ".substr(" << CharNo << ", " - << NumChars << ") != \""; - OS << Matches[0]->first.substr(CharNo, NumChars) << "\")\n"; + OS << Indent << "if (memcmp(" << StrVariableName << ".data()+" << CharNo + << ", \"" << Matches[0]->first.substr(CharNo, NumChars) << "\", " + << NumChars << "))\n"; OS << Indent << " break;\n"; }