From: Daniel Dunbar Date: Thu, 19 Nov 2009 03:26:50 +0000 (+0000) Subject: Driver: Resolve inconsistency in matching options against options which are X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b32aa51ce9b608002a031e8ca682f073e28024cf;p=clang Driver: Resolve inconsistency in matching options against options which are aliases -- just treat this case as an (unchecked) client error. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89306 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Option.h b/include/clang/Driver/Option.h index caf94e9d2c..3c6961e71b 100644 --- a/include/clang/Driver/Option.h +++ b/include/clang/Driver/Option.h @@ -136,6 +136,10 @@ namespace driver { /// matches - Predicate for whether this option is part of the /// given option (which may be a group). + /// + /// Note that matches against options which are an alias should never be + /// done -- aliases do not participate in matching and so such a query will + /// always be false. bool matches(const Option *Opt) const; bool matches(unsigned Id) const; diff --git a/lib/Driver/Option.cpp b/lib/Driver/Option.cpp index 7dc81d8e51..47a0652965 100644 --- a/lib/Driver/Option.cpp +++ b/lib/Driver/Option.cpp @@ -71,9 +71,7 @@ void Option::dump() const { } bool Option::matches(const Option *Opt) const { - // Aliases are never considered in matching. - if (Opt->getAlias()) - return matches(Opt->getAlias()); + // Aliases are never considered in matching, look through them. if (Alias) return Alias->matches(Opt); @@ -86,10 +84,7 @@ bool Option::matches(const Option *Opt) const { } bool Option::matches(unsigned Id) const { - // FIXME: Decide what to do here; we should either pull out the - // handling of alias on the option for Id from the other matches, or - // find some other solution (which hopefully doesn't require using - // the option table). + // Aliases are never considered in matching, look through them. if (Alias) return Alias->matches(Id);