mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-09-12 05:56:25 +00:00
fix: add a flag to MapValue and friends which indicates whether any module-level mappings are being made. In the common case of inlining, no module-level mappings are needed, so MapValue doesn't need to examine non-function-local metadata, which can be very expensive in the case of a large module with really deep metadata (e.g. a large C++ program compiled with -g). This flag is a little awkward; perhaps eventually it can be moved into the ClonedCodeInfo class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112190 91177308-0d34-0410-b5e6-96231b3b80d8
32 lines
1.0 KiB
C++
32 lines
1.0 KiB
C++
//===- ValueMapper.h - Remapping for constants and metadata -----*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines the MapValue interface which is used by various parts of
|
|
// the Transforms/Utils library to implement cloning and linking facilities.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TRANSFORMS_UTILS_VALUEMAPPER_H
|
|
#define LLVM_TRANSFORMS_UTILS_VALUEMAPPER_H
|
|
|
|
#include "llvm/ADT/ValueMap.h"
|
|
|
|
namespace llvm {
|
|
class Value;
|
|
class Instruction;
|
|
typedef ValueMap<const Value *, Value *> ValueToValueMapTy;
|
|
|
|
Value *MapValue(const Value *V, ValueToValueMapTy &VM,
|
|
bool ModuleLevelChanges);
|
|
void RemapInstruction(Instruction *I, ValueToValueMapTy &VM,
|
|
bool ModuleLevelChanges);
|
|
} // End llvm namespace
|
|
|
|
#endif
|