[llvm-dev] questions about AliasAnalysis(Basic Alias Analysis) in llvm3.3
Vedant Kumar via llvm-dev
llvm-dev at lists.llvm.org
Wed May 4 13:59:09 PDT 2016
Hi,
ISTM that you want:
canInstructionRangeModRef(BB.begin(), BB.end(), MemoryLocation(P, Size), MRI_Ref)
You could also walk the uses of the GV in question and check if their parent BB's are the BB of interest.
vedant
> On May 4, 2016, at 5:34 AM, PeiLIU via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Hi, My name is Pei Liu, I am using llvm-3.3 do some developing. I want to confirm that basic blocks operate global variables or not. For example:
> C-Language source code:
> int ga;
>
> int main()
> {
> int a = 10;
> int b = 100;
>
> if (a > 8) {
> int ma = ga;
> }
> return 0;
> }
>
> The llvm IR .ll file looks like this:
> ; Function Attrs: nounwind uwtable
> define i32 @main() #0 {
> entry:
> %retval = alloca i32, align 4
> %a = alloca i32, align 4
> %b = alloca i32, align 4
> %ma = alloca i32, align 4
> store i32 0, i32* %retval
> call void @llvm.dbg.declare(metadata !{i32* %a}, metadata !23), !dbg !24
> store i32 10, i32* %a, align 4, !dbg !24
> call void @llvm.dbg.declare(metadata !{i32* %b}, metadata !25), !dbg !26
> store i32 100, i32* %b, align 4, !dbg !26
> %tmp = load i32* %a, align 4, !dbg !27
> %cmp = icmp sgt i32 %tmp, 8, !dbg !27
> br i1 %cmp, label %if.then, label %if.end, !dbg !27
>
> if.then: ; preds = %entry
> call void @llvm.dbg.declare(metadata !{i32* %ma}, metadata !28), !dbg !30
> %tmp1 = load i32* @ga, align 4, !dbg !30
> store i32 %tmp1, i32* %ma, align 4, !dbg !30
> br label %if.end, !dbg !31
>
> if.end: ; preds = %if.then, %entry
> ret i32 0, !dbg !32
> }
>
> I want to use AliasAnalysis to confirm that the if.then block operate the global variable. I use the function canBasicBlockModify(const BasicBlock &BB, const Value *P, uint64_t Size) which belong to the class of AliasAnalysis. However, I use every block to test then it always return true of the function canBasicBlockModify.
>
> Does this property which basic block operates global variable can be confirmed? If it can be confirm, then how? Thanks for your help. Best wishes!
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
More information about the llvm-dev
mailing list