]> granicus.if.org Git - clang/commitdiff
Driver: Resolve inconsistency in matching options against options which are
authorDaniel Dunbar <daniel@zuster.org>
Thu, 19 Nov 2009 03:26:50 +0000 (03:26 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 19 Nov 2009 03:26:50 +0000 (03:26 +0000)
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

include/clang/Driver/Option.h
lib/Driver/Option.cpp

index caf94e9d2ceb4f2e7a6785a8c4098f0355606864..3c6961e71b1b7f12294afd1341fcbc87d2b194da 100644 (file)
@@ -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;
 
index 7dc81d8e511ee2f8c75166975479395ce1abec29..47a06529654782d1033e22470fae99dda66f9ba0 100644 (file)
@@ -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);