clam
clam copied to clipboard
Clam Error on LLVM IR translation to CrabIR
- Problem:
CRAB ERROR: Region::ref_store: type of value 6 (int32) is not compatible with region @V_39 (region(ref))
In LLVM IR, there is a global object with initialization:
%union.anon = type { i64 }
%struct.expdesc = type { i32, %union.anon, i32, i32 }
...
@luaK_prefix.ef = internal constant %struct.expdesc { i32 6, %union.anon zeroinitializer, i32 -1, i32 -1 }, align 8, !dbg !3989
In crab IR, %struct.expdesc
has the following regions associated:
crab_intrinsic(regions_from_memory_object,@V_40:region(ref),@V_41:region(int),@V_42:region(unknown),@V_43:region(unknown),@V_44:region(int),@V_45:region(int),@V_46:region(ref),@V_47:region(int),@V_48:region(int),@V_49:region(int))
- File: lua.pp.o.bc.zip
- Command to reproduce:
clam lua.pp.o.bc --simplifycfg-sink-common=false --clam-lower-unsigned-icmp --crab-dom=int --crab-widening-delay=2 --crab-widening-jump-set=0 --crab-narrowing-iterations=1 --crab-relational-threshold=10000 --crab-track=mem --crab-heap-analysis=cs-sea-dsa --sea-dsa-type-aware=true --sea-dsa-devirt --crab-singleton-aliases --crab-inter --crab-inter-max-summaries=9999999 --crab-inter-recursive=true --crab-inter-exact-summary-reuse=false --crab-inter-entry-main=true --crab-live --crab-print-cfg=false --crab-enable-warnings=false --crab-print-invariants=none --crab-store-invariants=false --crab-dot-cfg=false --use-crab-name-values=false --crab-enable-bignums=false