mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
** CORRECTLY, conservatively handle constant expressions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5924 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
eca8e8f111
commit
6cf4cb90a0
@ -47,7 +47,7 @@ Constant *ConstantFoldInstruction(Instruction *I) {
|
||||
|
||||
switch (I->getOpcode()) {
|
||||
case Instruction::Cast:
|
||||
return ConstRules::get(*Op0)->castTo(Op0, I->getType());
|
||||
return ConstRules::get(*Op0, *Op0)->castTo(Op0, I->getType());
|
||||
case Instruction::Add: return *Op0 + *Op1;
|
||||
case Instruction::Sub: return *Op0 - *Op1;
|
||||
case Instruction::Mul: return *Op0 * *Op1;
|
||||
@ -107,7 +107,7 @@ Constant *ConstantFoldCastInstruction(const Constant *V, const Type *DestTy) {
|
||||
}
|
||||
}
|
||||
|
||||
return ConstRules::get(*V)->castTo(V, DestTy);
|
||||
return ConstRules::get(*V, *V)->castTo(V, DestTy);
|
||||
}
|
||||
|
||||
Constant *ConstantFoldBinaryInstruction(unsigned Opcode, const Constant *V1,
|
||||
@ -555,3 +555,8 @@ Annotation *ConstRules::find(AnnotationID AID, const Annotable *TyA, void *) {
|
||||
return new EmptyRules();
|
||||
}
|
||||
}
|
||||
|
||||
ConstRules *ConstRules::getConstantExprRules() {
|
||||
static EmptyRules CERules;
|
||||
return &CERules;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user