Skip to content

how to know pts graph of a variable at a pirticular statement #1752

@NeyagapulaSiddhartha

Description

@NeyagapulaSiddhartha

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
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions