mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-01 00:33:09 +00:00
* Finegrainify namespacification
* Transform: free <ty>* (cast <ty2>* X to <ty>*) into free <ty2>* X git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10303 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
eae45cf44b
commit
67b1e1b89f
@ -48,8 +48,7 @@
|
|||||||
#include "llvm/Support/CallSite.h"
|
#include "llvm/Support/CallSite.h"
|
||||||
#include "Support/Statistic.h"
|
#include "Support/Statistic.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
using namespace llvm;
|
||||||
namespace llvm {
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
Statistic<> NumCombined ("instcombine", "Number of insts combined");
|
Statistic<> NumCombined ("instcombine", "Number of insts combined");
|
||||||
@ -104,6 +103,7 @@ namespace {
|
|||||||
Instruction *visitPHINode(PHINode &PN);
|
Instruction *visitPHINode(PHINode &PN);
|
||||||
Instruction *visitGetElementPtrInst(GetElementPtrInst &GEP);
|
Instruction *visitGetElementPtrInst(GetElementPtrInst &GEP);
|
||||||
Instruction *visitAllocationInst(AllocationInst &AI);
|
Instruction *visitAllocationInst(AllocationInst &AI);
|
||||||
|
Instruction *visitFreeInst(FreeInst &FI);
|
||||||
Instruction *visitLoadInst(LoadInst &LI);
|
Instruction *visitLoadInst(LoadInst &LI);
|
||||||
Instruction *visitBranchInst(BranchInst &BI);
|
Instruction *visitBranchInst(BranchInst &BI);
|
||||||
|
|
||||||
@ -2044,6 +2044,20 @@ Instruction *InstCombiner::visitAllocationInst(AllocationInst &AI) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Instruction *InstCombiner::visitFreeInst(FreeInst &FI) {
|
||||||
|
Value *Op = FI.getOperand(0);
|
||||||
|
|
||||||
|
// Change free <ty>* (cast <ty2>* X to <ty>*) into free <ty2>* X
|
||||||
|
if (CastInst *CI = dyn_cast<CastInst>(Op))
|
||||||
|
if (isa<PointerType>(CI->getOperand(0)->getType())) {
|
||||||
|
FI.setOperand(0, CI->getOperand(0));
|
||||||
|
return &FI;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// GetGEPGlobalInitializer - Given a constant, and a getelementptr
|
/// GetGEPGlobalInitializer - Given a constant, and a getelementptr
|
||||||
/// constantexpr, return the constant value being addressed by the constant
|
/// constantexpr, return the constant value being addressed by the constant
|
||||||
/// expression, or null if something is funny.
|
/// expression, or null if something is funny.
|
||||||
@ -2196,8 +2210,7 @@ bool InstCombiner::runOnFunction(Function &F) {
|
|||||||
return Changed;
|
return Changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
Pass *createInstructionCombiningPass() {
|
Pass *llvm::createInstructionCombiningPass() {
|
||||||
return new InstCombiner();
|
return new InstCombiner();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // End llvm namespace
|
|
||||||
|
Loading…
Reference in New Issue
Block a user