I am writing a pass in llvm that would identify loop invariants and hoist those instructions who are using those invariants, above the loop body. But for that i need to know whether there is any back edge from one node to another. For e.g. I want to find whether there is a back edge from node N to node H, where node H dominates node N, that would help me identify a natural loop. How can i find whether there is any edge from one node to another in the CFG ? I could not found any class called CFG in LLVM from which i could gather this information.
identifying a loop in LLVM CFG
1.9k Views Asked by Vikash Joshi At
2
There are 2 best solutions below
0

If you call the loop-simplify pass it will guarantee that there is only a single back edge to the loop header. This is a transformation pass so the CFG is modified but it makes additional CFG hacking far simpler.
Related Questions in LOOPS
- How to map JavaScript code to Google v8?
- Traversing a string using arm assembly inside V8 source
- What is difference between "node --prof" and using node-profiler
- Why does my 8-puzzle solution runs faster when I create an array twice
- is there any workaround for broken v8 date parser?
- does google v8 support the keyword "let"? not in node.js
- Determining cause of deoptimisation
- How do I store a reference to external pointer in a function template in V8?
- C++ null reference in V8 when trying to get Isolate in callback
- How to get the current function's name or linenumbers in V8
Related Questions in LLVM
- How to map JavaScript code to Google v8?
- Traversing a string using arm assembly inside V8 source
- What is difference between "node --prof" and using node-profiler
- Why does my 8-puzzle solution runs faster when I create an array twice
- is there any workaround for broken v8 date parser?
- does google v8 support the keyword "let"? not in node.js
- Determining cause of deoptimisation
- How do I store a reference to external pointer in a function template in V8?
- C++ null reference in V8 when trying to get Isolate in callback
- How to get the current function's name or linenumbers in V8
Related Questions in NODES
- How to map JavaScript code to Google v8?
- Traversing a string using arm assembly inside V8 source
- What is difference between "node --prof" and using node-profiler
- Why does my 8-puzzle solution runs faster when I create an array twice
- is there any workaround for broken v8 date parser?
- does google v8 support the keyword "let"? not in node.js
- Determining cause of deoptimisation
- How do I store a reference to external pointer in a function template in V8?
- C++ null reference in V8 when trying to get Isolate in callback
- How to get the current function's name or linenumbers in V8
Related Questions in EDGES
- How to map JavaScript code to Google v8?
- Traversing a string using arm assembly inside V8 source
- What is difference between "node --prof" and using node-profiler
- Why does my 8-puzzle solution runs faster when I create an array twice
- is there any workaround for broken v8 date parser?
- does google v8 support the keyword "let"? not in node.js
- Determining cause of deoptimisation
- How do I store a reference to external pointer in a function template in V8?
- C++ null reference in V8 when trying to get Isolate in callback
- How to get the current function's name or linenumbers in V8
Related Questions in CONTROL-FLOW-GRAPH
- How to map JavaScript code to Google v8?
- Traversing a string using arm assembly inside V8 source
- What is difference between "node --prof" and using node-profiler
- Why does my 8-puzzle solution runs faster when I create an array twice
- is there any workaround for broken v8 date parser?
- does google v8 support the keyword "let"? not in node.js
- Determining cause of deoptimisation
- How do I store a reference to external pointer in a function template in V8?
- C++ null reference in V8 when trying to get Isolate in callback
- How to get the current function's name or linenumbers in V8
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You can roll your own (by iterating over the successors of a basic block with
succ_iterator
/succ_begin
/succ_end
) or you can useLoopInfo
.