mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-26 18:20:39 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14622 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //===- Trace.cpp - Implementation of Trace class --------------------------===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file was developed by the LLVM research group and is distributed under
 | |
| // the University of Illinois Open Source License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| //
 | |
| // This class represents a single trace of LLVM basic blocks.  A trace is a
 | |
| // single entry, multiple exit, region of code that is often hot.  Trace-based
 | |
| // optimizations treat traces almost like they are a large, strange, basic
 | |
| // block: because the trace path is assumed to be hot, optimizations for the
 | |
| // fall-through path are made at the expense of the non-fall-through paths.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #include "llvm/Analysis/Trace.h"
 | |
| #include "llvm/Function.h"
 | |
| #include "llvm/Assembly/Writer.h"
 | |
| #include <iostream>
 | |
| 
 | |
| using namespace llvm;
 | |
| 
 | |
| Function *Trace::getFunction() const {
 | |
|   return getEntryBasicBlock()->getParent();
 | |
| }
 | |
| 
 | |
| 
 | |
| Module *Trace::getModule() const {
 | |
|   return getFunction()->getParent();
 | |
| }
 | |
| 
 | |
| /// print - Write trace to output stream.
 | |
| ///
 | |
| void Trace::print (std::ostream &O) const {
 | |
|   Function *F = getFunction ();
 | |
|   O << "; Trace from function " << F->getName () << ", blocks:\n";
 | |
|   for (const_iterator i = begin (), e = end (); i != e; ++i) {
 | |
|     O << "; ";
 | |
|     WriteAsOperand (O, *i, true, true, getModule ());
 | |
|     O << "\n";
 | |
|   }
 | |
|   O << "; Trace parent function: \n" << *F;
 | |
| }
 | |
| 
 | |
| /// dump - Debugger convenience method; writes trace to standard error
 | |
| /// output stream.
 | |
| ///
 | |
| void Trace::dump () const {
 | |
|   print (std::cerr);
 | |
| }
 |