mirror of
https://github.com/revng/revng
synced 2026-06-21 14:07:57 +00:00
7d235f4fd0
Also do some basic cleanup: capitalize first letters, add `.` at the end of the sentences, and so on.
24 lines
664 B
C++
24 lines
664 B
C++
/// \file IRHelpers.cpp
|
|
|
|
//
|
|
// This file is distributed under the MIT License. See LICENSE.md for details.
|
|
//
|
|
|
|
#include "llvm/IR/DebugInfoMetadata.h"
|
|
#include "llvm/IR/Instruction.h"
|
|
|
|
#include "revng/Pipes/IRHelpers.h"
|
|
|
|
std::optional<pipeline::Location<decltype(revng::ranks::Instruction)>>
|
|
getLocation(const llvm::Instruction *I) {
|
|
auto MaybeDebugLoc = I->getDebugLoc();
|
|
if (not MaybeDebugLoc or MaybeDebugLoc.getInlinedAt() == nullptr)
|
|
return std::nullopt;
|
|
|
|
using Location = pipeline::Location<decltype(revng::ranks::Instruction)>;
|
|
auto Result = Location::fromString(MaybeDebugLoc->getScope()->getName());
|
|
revng_assert(Result);
|
|
|
|
return Result;
|
|
}
|