mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Add prototype for new CloneBasicBlock function
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5804 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
681cfb9ab4
commit
a107e5f11c
@ -8,8 +8,8 @@
|
|||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#ifndef LLVM_TRANSFORMS_UTIlS_CLONING_H
|
#ifndef LLVM_TRANSFORMS_UTILS_CLONING_H
|
||||||
#define LLVM_TRANSFORMS_UTIlS_CLONING_H
|
#define LLVM_TRANSFORMS_UTILS_CLONING_H
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
@ -24,6 +24,32 @@ class ReturnInst;
|
|||||||
///
|
///
|
||||||
Module *CloneModule(const Module *M);
|
Module *CloneModule(const Module *M);
|
||||||
|
|
||||||
|
/// CloneBasicBlock - Return a copy of the specified basic block, but without
|
||||||
|
/// embedding the block into a particular function. The block returned is an
|
||||||
|
/// exact copy of the specified basic block, without any remapping having been
|
||||||
|
/// performed. Because of this, this is only suitable for applications where
|
||||||
|
/// the basic block will be inserted into the same function that it was cloned
|
||||||
|
/// from (loop unrolling would use this, for example).
|
||||||
|
///
|
||||||
|
/// Also, note that this function makes a direct copy of the basic block, and
|
||||||
|
/// can thus produce illegal LLVM code. In particular, it will copy any PHI
|
||||||
|
/// nodes from the original block, even though there are no predecessors for the
|
||||||
|
/// newly cloned block (thus, phi nodes will have to be updated). Also, this
|
||||||
|
/// block will branch to the old successors of the original block: these
|
||||||
|
/// successors will have to have any PHI nodes updated to account for the new
|
||||||
|
/// incoming edges.
|
||||||
|
///
|
||||||
|
/// The correlation between instructions in the source and result basic blocks
|
||||||
|
/// is recorded in the ValueMap map.
|
||||||
|
///
|
||||||
|
/// If you have a particular suffix you'd like to use to add to any cloned
|
||||||
|
/// names, specify it as the optional second parameter.
|
||||||
|
///
|
||||||
|
BasicBlock *CloneBasicBlock(const BasicBlock *BB,
|
||||||
|
std::map<const Value*, Value*> &ValueMap,
|
||||||
|
const char *NameSuffix = "");
|
||||||
|
|
||||||
|
|
||||||
/// CloneFunction - Return a copy of the specified function, but without
|
/// CloneFunction - Return a copy of the specified function, but without
|
||||||
/// embedding the function into another module. Also, any references specified
|
/// embedding the function into another module. Also, any references specified
|
||||||
/// in the ValueMap are changed to refer to their mapped value instead of the
|
/// in the ValueMap are changed to refer to their mapped value instead of the
|
||||||
|
Loading…
Reference in New Issue
Block a user