interp: support non-const ptrtoint instruction
Этот коммит содержится в:
родитель
c3c4a33b42
коммит
4fdffdf8b2
1 изменённых файлов: 3 добавлений и 0 удалений
|
@ -160,6 +160,9 @@ func (fr *frame) evalBasicBlock(bb, incoming llvm.BasicBlock, indent string) (re
|
||||||
case !inst.IsAFPExtInst().IsNil():
|
case !inst.IsAFPExtInst().IsNil():
|
||||||
value := fr.getLocal(inst.Operand(0))
|
value := fr.getLocal(inst.Operand(0))
|
||||||
fr.locals[inst] = &LocalValue{fr.Eval, fr.builder.CreateFPExt(value.(*LocalValue).Value(), inst.Type(), "")}
|
fr.locals[inst] = &LocalValue{fr.Eval, fr.builder.CreateFPExt(value.(*LocalValue).Value(), inst.Type(), "")}
|
||||||
|
case !inst.IsAPtrToIntInst().IsNil():
|
||||||
|
value := fr.getLocal(inst.Operand(0))
|
||||||
|
fr.locals[inst] = &LocalValue{fr.Eval, fr.builder.CreatePtrToInt(value.Value(), inst.Type(), "")}
|
||||||
case !inst.IsABitCastInst().IsNil() && inst.Type().TypeKind() == llvm.PointerTypeKind:
|
case !inst.IsABitCastInst().IsNil() && inst.Type().TypeKind() == llvm.PointerTypeKind:
|
||||||
operand := inst.Operand(0)
|
operand := inst.Operand(0)
|
||||||
if !operand.IsACallInst().IsNil() {
|
if !operand.IsACallInst().IsNil() {
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче