[llvm-dev] Help on finding Base GEP

Hal Finkel via llvm-dev llvm-dev at lists.llvm.org
Wed May 30 05:39:43 PDT 2018


On 05/30/2018 06:04 AM, Siddharth Bhat via llvm-dev wrote:
> You can run SCEV which will see through bitcasts and GEPs, so it
> should give an expression of the form (base + offset) on the pointer
> of the load.

Specifically, you can use ScalarEvolution to subtract the expression for
the base descriptor from the expression for the loaded pointer and see
if the result is a SCEVConstant.

Also, you might find GetPointerBaseWithConstantOffset (in
ValueTracking.h) useful.

 -Hal

>
> Cheers
> siddharth
>
> On Wed 30 May, 2018, 16:30 Venkataramanan Kumar via llvm-dev,
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>
>     Hi, 
>
>     Below is the snippet of  LLVM IR code generated by Flang  
>
>     ---snip--
>       %3 = getelementptr i64, i64* %"a$sd", i64 11, !dbg !16
>       %4 = bitcast i64* %3 to i32*, !dbg !16
>       %5 = load i32, i32* %4, align 4, !dbg !16, !tbaa !22
>     ---snip--
>
>     My requirement is for any such LoadInst (example: %5),  I want to
>     check if its base GEP (i.e. %3) loads at particular offset (11)
>     from its corresponding arrays descriptor structure (a$sd).
>
>     is there any API in LLVM to check this? or I need to write my own?
>
>     regards,
>     Venkat.
>
>
>     _______________________________________________
>     LLVM Developers mailing list
>     llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
> -- 
> Sending this from my phone, please excuse any typos!
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180530/a916083f/attachment.html>


More information about the llvm-dev mailing list