-
Notifications
You must be signed in to change notification settings - Fork 472
Description
int main() {
int b;
int c;
int *a=&b;
int **s =&a;
foo(&s); //s1
if(*a>32){
a = &c;
}
}
Here I want to get the info that at s1 s->a->b
How to get this information?
IR for reference
define dso_local noundef i32 @main() #3 !dbg !813 {
%1 = alloca i32, align 4
%2 = alloca i32, align 4
%3 = alloca i32, align 4
%4 = alloca ptr, align 8
%5 = alloca ptr, align 8
store i32 0, ptr %1, align 4
call void @llvm.dbg.declare(metadata ptr %2, metadata !814, metadata !DIExpression()), !dbg !815
call void @llvm.dbg.declare(metadata ptr %3, metadata !816, metadata !DIExpression()), !dbg !817
call void @llvm.dbg.declare(metadata ptr %4, metadata !818, metadata !DIExpression()), !dbg !819
store ptr %2, ptr %4, align 8, !dbg !819
call void @llvm.dbg.declare(metadata ptr %5, metadata !820, metadata !DIExpression()), !dbg !821
store ptr %4, ptr %5, align 8, !dbg !821
%6 = call noundef ptr @_Z3fooPPPi(ptr noundef %5), !dbg !822
%7 = load ptr, ptr %4, align 8, !dbg !823
%8 = load i32, ptr %7, align 4, !dbg !825
%9 = icmp sgt i32 %8, 32, !dbg !826
br i1 %9, label %10, label %11, !dbg !827
10: ; preds = %0
store ptr %3, ptr %4, align 8, !dbg !828
br label %11, !dbg !830
11: ; preds = %10, %0
%12 = load i32, ptr %1, align 4, !dbg !831
ret i32 %12, !dbg !831
}