mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +00:00 
			
		
		
		
	pass manager do it's thing." Fixes crash when compiling -g files and suppresses dwarf statements if no debug info is present. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25100 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //===-- llvm/CodeGen/MachineDebugInfo.cpp -----------------------*- C++ -*-===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file was developed by James M. Laskey and is distributed under
 | |
| // the University of Illinois Open Source License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| //
 | |
| // Collect debug information for a module.  This information should be in a
 | |
| // neutral form that can be used by different debugging schemes.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #include "llvm/CodeGen/MachineDebugInfo.h"
 | |
| 
 | |
| using namespace llvm;
 | |
| 
 | |
| // Handle the Pass registration stuff necessary to use TargetData's.
 | |
| namespace {
 | |
|   RegisterPass<MachineDebugInfo> X("machinedebuginfo", "Debug Information");
 | |
| }
 | |
|   
 | |
| /// doInitialization - Initialize the debug state for a new module.
 | |
| ///
 | |
| bool MachineDebugInfo::doInitialization() {
 | |
|   return false;
 | |
| }
 | |
| 
 | |
| /// doFinalization - Tear down the debug state after completion of a module.
 | |
| ///
 | |
| bool MachineDebugInfo::doFinalization() {
 | |
|   return false;
 | |
| }
 | |
| 
 | |
| /// getUniqueSourceID - Register a source file with debug info.  Returns an id.
 | |
| ///
 | |
| unsigned MachineDebugInfo::getUniqueSourceID(const std::string &fname,
 | |
|                                              const std::string &dirname) {
 | |
|   // Compose a key
 | |
|   const std::string path = dirname + "/" + fname;
 | |
|   // Check if the source file is already recorded
 | |
|   std::map<std::string, unsigned>::iterator
 | |
|       SMI = SourceMap.lower_bound(path);
 | |
|   // If already there return existing id
 | |
|   if (SMI != SourceMap.end() && SMI->first == path) return SMI->second;
 | |
|   // Bump up the count
 | |
|   ++SourceCount;
 | |
|   // Record the count
 | |
|   SourceMap.insert(SMI, std::make_pair(path, SourceCount));
 | |
|   // Return id
 | |
|   return SourceCount;
 | |
| }
 | |
| 
 | |
| /// getSourceFiles - Return a vector of files.  Vector index + 1 equals id.
 | |
| ///
 | |
| std::vector<std::string> MachineDebugInfo::getSourceFiles() const {
 | |
|   std::vector<std::string> Sources(SourceCount);
 | |
|   
 | |
|   for (std::map<std::string, unsigned>::const_iterator SMI = SourceMap.begin(),
 | |
|                                                        E = SourceMap.end();
 | |
|                                                        SMI != E; SMI++) {
 | |
|     unsigned Index = SMI->second - 1;
 | |
|     const std::string &Path = SMI->first;
 | |
|     Sources[Index] = Path;
 | |
|   }
 | |
|   return Sources;
 | |
| }
 | |
| 
 |