gfx/angle/src/compiler/QualifierAlive.cpp

Wed, 31 Dec 2014 07:16:47 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:16:47 +0100
branch
TOR_BUG_9701
changeset 3
141e0f1194b1
permissions
-rw-r--r--

Revert simplistic fix pending revisit of Mozilla integration attempt.

     1 //
     2 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
     3 // Use of this source code is governed by a BSD-style license that can be
     4 // found in the LICENSE file.
     5 //
     7 #include "compiler/intermediate.h"
     9 class TAliveTraverser : public TIntermTraverser {
    10 public:
    11     TAliveTraverser(TQualifier q) : TIntermTraverser(true, false, false, true), found(false), qualifier(q)
    12     {
    13     }
    15 	bool wasFound() { return found; }
    17 protected:
    18     bool found;
    19     TQualifier qualifier;
    21     void visitSymbol(TIntermSymbol*);
    22     bool visitSelection(Visit, TIntermSelection*);
    23 };
    25 //
    26 // Report whether or not a variable of the given qualifier type
    27 // is guaranteed written.  Not always possible to determine if
    28 // it is written conditionally.
    29 //
    30 // ?? It does not do this well yet, this is just a place holder
    31 // that simply determines if it was reference at all, anywhere.
    32 //
    33 bool QualifierWritten(TIntermNode* node, TQualifier qualifier)
    34 {
    35     TAliveTraverser it(qualifier);
    37     if (node)
    38         node->traverse(&it);
    40     return it.wasFound();
    41 }
    43 void TAliveTraverser::visitSymbol(TIntermSymbol* node)
    44 {
    45     //
    46     // If it's what we're looking for, record it.
    47     //
    48     if (node->getQualifier() == qualifier)
    49         found = true;
    50 }
    52 bool TAliveTraverser::visitSelection(Visit preVisit, TIntermSelection* node)
    53 {
    54     if (wasFound())
    55         return false;
    57     return true;
    58 }

mercurial