mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-04 05:17:07 +00:00 
			
		
		
		
	Finish off PR23080 by renaming the debug info IR constructs from `MD*` to `DI*`. The last of the `DIDescriptor` classes were deleted in r235356, and the last of the related typedefs removed in r235413, so this has all baked for about a week. Note: If you have out-of-tree code (like a frontend), I recommend that you get everything compiling and tests passing with the *previous* commit before updating to this one. It'll be easier to keep track of what code is using the `DIDescriptor` hierarchy and what you've already updated, and I think you're extremely unlikely to insert bugs. YMMV of course. Back to *this* commit: I did this using the rename-md-di-nodes.sh upgrade script I've attached to PR23080 (both code and testcases) and filtered through clang-format-diff.py. I edited the tests for test/Assembler/invalid-generic-debug-node-*.ll by hand since the columns were off-by-three. It should work on your out-of-tree testcases (and code, if you've followed the advice in the previous paragraph). Some of the tests are in badly named files now (e.g., test/Assembler/invalid-mdcompositetype-missing-tag.ll should be 'dicompositetype'); I'll come back and move the files in a follow-up commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236120 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			103 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
//===-- DebugLoc.cpp - Implement DebugLoc class ---------------------------===//
 | 
						|
//
 | 
						|
//                     The LLVM Compiler Infrastructure
 | 
						|
//
 | 
						|
// This file is distributed under the University of Illinois Open Source
 | 
						|
// License. See LICENSE.TXT for details.
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
#include "llvm/IR/DebugLoc.h"
 | 
						|
#include "LLVMContextImpl.h"
 | 
						|
#include "llvm/ADT/DenseMapInfo.h"
 | 
						|
#include "llvm/IR/DebugInfo.h"
 | 
						|
using namespace llvm;
 | 
						|
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
// DebugLoc Implementation
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
DebugLoc::DebugLoc(const DILocation *L) : Loc(const_cast<DILocation *>(L)) {}
 | 
						|
DebugLoc::DebugLoc(const MDNode *L) : Loc(const_cast<MDNode *>(L)) {}
 | 
						|
 | 
						|
DILocation *DebugLoc::get() const {
 | 
						|
  return cast_or_null<DILocation>(Loc.get());
 | 
						|
}
 | 
						|
 | 
						|
unsigned DebugLoc::getLine() const {
 | 
						|
  assert(get() && "Expected valid DebugLoc");
 | 
						|
  return get()->getLine();
 | 
						|
}
 | 
						|
 | 
						|
unsigned DebugLoc::getCol() const {
 | 
						|
  assert(get() && "Expected valid DebugLoc");
 | 
						|
  return get()->getColumn();
 | 
						|
}
 | 
						|
 | 
						|
MDNode *DebugLoc::getScope() const {
 | 
						|
  assert(get() && "Expected valid DebugLoc");
 | 
						|
  return get()->getScope();
 | 
						|
}
 | 
						|
 | 
						|
DILocation *DebugLoc::getInlinedAt() const {
 | 
						|
  assert(get() && "Expected valid DebugLoc");
 | 
						|
  return get()->getInlinedAt();
 | 
						|
}
 | 
						|
 | 
						|
MDNode *DebugLoc::getInlinedAtScope() const {
 | 
						|
  return cast<DILocation>(Loc)->getInlinedAtScope();
 | 
						|
}
 | 
						|
 | 
						|
DebugLoc DebugLoc::getFnDebugLoc() const {
 | 
						|
  // FIXME: Add a method on \a DILocation that does this work.
 | 
						|
  const MDNode *Scope = getInlinedAtScope();
 | 
						|
  if (auto *SP = getDISubprogram(Scope))
 | 
						|
    return DebugLoc::get(SP->getScopeLine(), 0, SP);
 | 
						|
 | 
						|
  return DebugLoc();
 | 
						|
}
 | 
						|
 | 
						|
DebugLoc DebugLoc::get(unsigned Line, unsigned Col, const MDNode *Scope,
 | 
						|
                       const MDNode *InlinedAt) {
 | 
						|
  // If no scope is available, this is an unknown location.
 | 
						|
  if (!Scope)
 | 
						|
    return DebugLoc();
 | 
						|
 | 
						|
  return DILocation::get(Scope->getContext(), Line, Col,
 | 
						|
                         const_cast<MDNode *>(Scope),
 | 
						|
                         const_cast<MDNode *>(InlinedAt));
 | 
						|
}
 | 
						|
 | 
						|
void DebugLoc::dump() const {
 | 
						|
#ifndef NDEBUG
 | 
						|
  if (!Loc)
 | 
						|
    return;
 | 
						|
 | 
						|
  dbgs() << getLine();
 | 
						|
  if (getCol() != 0)
 | 
						|
    dbgs() << ',' << getCol();
 | 
						|
  if (DebugLoc InlinedAtDL = DebugLoc(getInlinedAt())) {
 | 
						|
    dbgs() << " @ ";
 | 
						|
    InlinedAtDL.dump();
 | 
						|
  } else
 | 
						|
    dbgs() << "\n";
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
void DebugLoc::print(raw_ostream &OS) const {
 | 
						|
  if (!Loc)
 | 
						|
    return;
 | 
						|
 | 
						|
  // Print source line info.
 | 
						|
  auto *Scope = cast<DIScope>(getScope());
 | 
						|
  OS << Scope->getFilename();
 | 
						|
  OS << ':' << getLine();
 | 
						|
  if (getCol() != 0)
 | 
						|
    OS << ':' << getCol();
 | 
						|
 | 
						|
  if (DebugLoc InlinedAtDL = getInlinedAt()) {
 | 
						|
    OS << " @[ ";
 | 
						|
    InlinedAtDL.print(OS);
 | 
						|
    OS << " ]";
 | 
						|
  }
 | 
						|
}
 |