similar to: [LLVMdev] Inter-procedural program flow analysis

Displaying 20 results from an estimated 2000 matches similar to: "[LLVMdev] Inter-procedural program flow analysis"

2012 Oct 02
0
[LLVMdev] Inter-procedural program flow analysis
Isn't this effectively the halting problem? Consider the case where block Y is the exit block of main() and block X is the entry block of main(). Jim On Oct 2, 2012, at 4:29 PM, Stephen Schiffli <sschiffli at gmail.com> wrote: > Is there any inter-procedural analysis that could tell me if some BasicBlock Y is guaranteed to execute based on my knowledge that BasicBlock X will
2012 Oct 03
2
[LLVMdev] Inter-procedural program flow analysis
I think you're looking for an inter-procedural post dominator analysis. I don't think there is one in LLVM already, but it should be relatively straightforward. This gives a sound approximation (i.e. no false positives) of something sort-of equivalent to the halting problem: if the program terminates, then block Y was executed. Cheers, Scott On Tue, Oct 2, 2012 at 7:43 PM, Jim Grosbach
2012 Oct 03
0
[LLVMdev] Inter-procedural program flow analysis
Okay thanks for the info. The term program termination was probably a poor choice of words. I'm really just trying to build an inter-procedural BasicBlock graph, and then look for postdominance as Scott suggested. I'll go about making my own since it doesn't sound like there is one out there already. Thanks, -Stephen On Tue, Oct 2, 2012 at 5:06 PM, Scott Moore <sdmoore at
2012 Oct 11
2
[LLVMdev] Function aliases in CallGraph
Hello, I have a simple program using aliases to functions, and it seems that the CallGraph doesn't follow these aliases. Here is the example: @alias = alias void ()* @realfunc define void @realfunc() { entry: ret void } define i32 @main() { entry: call void @alias() ret i32 0 } ******* Output of the CallGraph ******* Call graph node <<null
2012 Oct 11
0
[LLVMdev] Function aliases in CallGraph
On Thu, Oct 11, 2012 at 3:56 PM, Stephen Schiffli <sschiffli at gmail.com> wrote: > Hello, I have a simple program using aliases to functions, and it seems that > the CallGraph doesn't follow these aliases. Here is the example: > > @alias = alias void ()* @realfunc > > define void @realfunc() { > entry: > ret void > } > > define i32 @main() { >
2012 Aug 08
1
[LLVMdev] clang thread-local compilation error on windows
Hello, I am trying to compile some code to LLVM IR with a simple "__thread int x" but hitting this error: test.cpp:1:1: error: thread-local storage is unsupported for the current target I'm using both the -S and -emit-llvm options on clang, and was expecting to see "@x = thread_local global i32 0" come out of clang. I am curious why clang even cares about this since
2012 Nov 16
1
[LLVMdev] LLMV demo page
Hello all, I was playing with the demo and found that I couldn't use any c++11: warning: 'noexcept' is a keyword in C++11 [-Wc++11-compat] I was wondering if the demo will be updated to LLVM/Clang 3.2 once that finishes, and if it would be possible to enable c++11 support. Thanks, -Stephen -------------- next part -------------- An HTML attachment was scrubbed... URL:
2016 Feb 10
3
Open Project : Inter-procedural Register Allocation [GSoC 2016]
Hello Community, I would like to know status of the project and also importance of it. If the project is still open I would like to work on GSoC 2016 proposal for Inter-procedural Register Allocation, in that case please also suggest possible mentor or let me know if anyone is willing to be mentor for this. Sincerely, *Vivek Pandya* -------------- next part -------------- An HTML attachment was
2011 Apr 16
1
[LLVMdev] [Fwd: Re: [Fwd: Regarding Inter Procedural Constant Propagation]]
Hi, I used the following commands on the program attached below: llvm-gcc --emit-llvm main.c -c -o main.bc opt -ipconstprop main.bc -o main1.bc diff main.bc main1.bc no difference was o/p :( The Program Segment is as shown below: #include <stdio.h> void f1(int a) { a=a+1; printf("%d",a); } void f2() { int b; b=1; f1(b); } int main() { int
2011 Apr 12
0
[LLVMdev] Regarding Inter Procedural Constant Propagation
Hi, I want to see the output of a InterProcedural Constant Propagation Pass IPCP in llvm. I have llvm 2.8 installed.And i used opt -print-after-all command to see the .bc output generated after each pass. However,this does not include dump produced by IPCP :( why? Kindly tell me how to view dump produced by IPCP. P.S: i have tried opt -ipcp src.bc -o src1.bc However the src.bc and src1.bc both
2016 Mar 24
0
Open Project : Inter-procedural Register Allocation [GSoC 2016]
> On Mar 24, 2016, at 1:55 PM, Mehdi Amini <mehdi.amini at apple.com> wrote: > >> One more, just for fun: Inter-procedural stack allocation. That is of calls bar, bar needs 4 bytes of stack space. Instead of bar allocating 4 bytes, it adds an attribute to itself, then foo allocates 4 bytes of space at the bottom of the stack for bar to use. > > This is something that
2016 Mar 23
0
Open Project : Inter-procedural Register Allocation [GSoC 2016]
Hi Vivek, [+CC Matthias, Quentin] Inter-procedural register allocation can be a big win, but my estimate is that it will be challenging to complete within one summer unless you're already familiar with LLVM's register allocator. I've CC'ed some people who can give you some more detailed information. -- Sanjoy On Tue, Feb 9, 2016 at 9:17 PM, vivek pandya via llvm-dev
2014 Dec 27
2
[LLVMdev] How to use BlockFrequency in inter-procedural context?
The BlockFrequency analysis has been useful for machine block placement, register allocation and other function-level optimizations. How could we extend it for use in an inter-procedural (whole-program) context? For example, if we would like to compare the hotness of two call sites in different functions, or calculate the hotness of two global variables referenced in multiple functions. If the
2016 Mar 23
0
Open Project : Inter-procedural Register Allocation [GSoC 2016]
>From the research and code I've seen - Doesn't this break regalloc down into a global and location allocation strategy? (maybe I'm remembering incorrectly) On Wed, Mar 23, 2016 at 12:04 PM, Mehdi Amini via llvm-dev <llvm-dev at lists.llvm.org> wrote: > >> On Mar 22, 2016, at 6:04 PM, Matthias Braun via llvm-dev <llvm-dev at lists.llvm.org> wrote: >>
2016 Mar 23
1
Open Project : Inter-procedural Register Allocation [GSoC 2016]
*Vivek Pandya* On Wed, Mar 23, 2016 at 9:43 AM, C Bergström <cbergstrom at pathscale.com> wrote: > From the research and code I've seen - Doesn't this break regalloc > down into a global and location allocation strategy? (maybe I'm > remembering incorrectly) > > Yes I think you are correct. If I recall IP Reg allocation allocates some registers to varibale that
2020 Mar 18
2
[GSOC] "Project: Improve inter-procedural analyses and optimisations"
On 03/16, Fahad Nayyar wrote: > I can see that Johanned have put up some issues for GSOC aspirants. I think > that [2] <https://github.com/llvm/llvm-project/issues/179> ([Attributor] > Cleanup and upstream `Attribute::MaxObjectSize`) will be a very good issue > for me, It seems doable and I can get familiar with the whole process of > writing a patch for an issue. How should I
2016 Mar 23
0
Open Project : Inter-procedural Register Allocation [GSoC 2016]
*Vivek Pandya* On Wed, Mar 23, 2016 at 10:18 PM, Quentin Colombet <qcolombet at apple.com> wrote: > The pass manager already has support for calligraph connected region IIRC. > If I am not wrong Quentin and Mehdi Amini refers to CallGraphSCCPass.cpp > As for the regmask part, we probably could hack something up in a week or > so, but I believe this is not what Vivek had in
2014 Dec 27
2
[LLVMdev] How to use BlockFrequency in inter-procedural context?
David Is this true for static heuristics as well ? If the bb freqs are scaled wrt to the entry block freq and a) use such scaled freqs for the bb's that have calls b) propagate this info topologically over the call graph, how representative will be the info if one just wants to use in a comparative sense ? -Dibyendu Sent from my Windows Phone ________________________________ From: Xinliang
2016 Mar 23
0
Open Project : Inter-procedural Register Allocation [GSoC 2016]
No need to apologize this thread surely deserved some answers :) From my perspective this project sounds doable. I would expect the register allocation parts to be not too hard: I imagine this being just distilling a new clobber regmask after allocating a function. I would expect the challenging (or annoying) part to get a machine module pass (or a similar mechanism to influence the order in
2016 Mar 23
2
Open Project : Inter-procedural Register Allocation [GSoC 2016]
The pass manager already has support for calligraph connected region IIRC. As for the regmask part, we probably could hack something up in a week or so, but I believe this is not what Vivek had in mind. I think the main challenge of a real inter-procedural register allocator is to change all of the calling convention dynamically and more importantly convey the right information to other tools