166ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com// 266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved. 366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com// Use of this source code is governed by a BSD-style license that can be 466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com// found in the LICENSE file. 566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com// 666ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 7dcefb75e81f3eec28fb1d2d3b3847682659e7378Geoff Lang#include "compiler/translator/depgraph/DependencyGraphOutput.h" 866ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 966ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comvoid TDependencyGraphOutput::outputIndentation() 1066ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com{ 1166ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com for (int i = 0; i < getDepth(); ++i) 1266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << " "; 1366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com} 1466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 1566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comvoid TDependencyGraphOutput::visitArgument(TGraphArgument* parameter) 1666ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com{ 1766ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com outputIndentation(); 1866ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << "argument " << parameter->getArgumentNumber() << " of call to " 1966ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com << parameter->getIntermFunctionCall()->getName() << "\n"; 2066ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com} 2166ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 2266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comvoid TDependencyGraphOutput::visitFunctionCall(TGraphFunctionCall* functionCall) 2366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com{ 2466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com outputIndentation(); 2566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << "function call " << functionCall->getIntermFunctionCall()->getName() << "\n"; 2666ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com} 2766ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 2866ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comvoid TDependencyGraphOutput::visitSymbol(TGraphSymbol* symbol) 2966ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com{ 3066ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com outputIndentation(); 3166ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << symbol->getIntermSymbol()->getSymbol() << " (symbol id: " 3266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com << symbol->getIntermSymbol()->getId() << ")\n"; 3366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com} 3466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 3566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comvoid TDependencyGraphOutput::visitSelection(TGraphSelection* selection) 3666ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com{ 3766ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com outputIndentation(); 3866ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << "selection\n"; 3966ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com} 4066ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 4166ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comvoid TDependencyGraphOutput::visitLoop(TGraphLoop* loop) 4266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com{ 4366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com outputIndentation(); 4466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << "loop condition\n"; 4566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com} 4666ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 4766ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comvoid TDependencyGraphOutput::visitLogicalOp(TGraphLogicalOp* logicalOp) 4866ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com{ 4966ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com outputIndentation(); 5066ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << "logical " << logicalOp->getOpString() << "\n"; 5166ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com} 5266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 5366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.comvoid TDependencyGraphOutput::outputAllSpanningTrees(TDependencyGraph& graph) 5466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com{ 5566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << "\n"; 5666ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com 5766ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com for (TGraphNodeVector::const_iterator iter = graph.begin(); iter != graph.end(); ++iter) 5866ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com { 5966ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com TGraphNode* symbol = *iter; 6066ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << "--- Dependency graph spanning tree ---\n"; 6166ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com clearVisited(); 6266ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com symbol->traverse(this); 6366ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com mSink << "\n"; 6466ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com } 6566ebd0143ea40a9beb83eab5d86e24f52825b3famaxvujovic@gmail.com} 66