[LLVMdev] Eliminate SSA Virtual registers

52 views
Skip to first unread message

ni...@cse.iitm.ac.in

unread,
Feb 1, 2014, 10:47:17 AM2/1/14
to llvmdev
Hi,

is there a opt pass that replaces the SSA virtual registers to stack-variables? I want to eliminate the SSA virtual register from my IR. Kindly suggest 

BR/Nizam

Benjamin Kramer

unread,
Feb 1, 2014, 11:27:00 AM2/1/14
to ni...@cse.iitm.ac.in, llvmdev

On 01.02.2014, at 16:47, ni...@cse.iitm.ac.in wrote:

> Hi,
>
> is there a opt pass that replaces the SSA virtual registers to stack-variables? I want to eliminate the SSA virtual register from my IR. Kindly suggest

Try the register to memory demotion pass. opt -reg2mem

- Ben


_______________________________________________
LLVM Developers mailing list
LLV...@cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

Anton Korobeynikov

unread,
Feb 1, 2014, 11:42:42 AM2/1/14
to ni...@cse.iitm.ac.in, llvmdev
Here it is: http://llvm.org/docs/Passes.html#reg2mem-demote-all-values-to-stack-slots
> _______________________________________________
> LLVM Developers mailing list
> LLV...@cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>



--
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University

ni...@cse.iitm.ac.in

unread,
Feb 1, 2014, 11:23:55 AM2/1/14
to Benjamin Kramer, llvmdev

Hi Ben,


That did help. I continue to notice the virtual register in the program. I use LLVM 3.4. The program i am looking  at  is a very simple one. Listed below

int global_var;
int *global_ptr;

int32_t main(int32_t argc, char ** argv){
   int p = 10;
   int k = 20;
   int *pp;
   char *c_pp;

   pp = &k;
   global_ptr = pp;
   pp = &p;
   global_ptr = &global_var;
   return 0;
}
BR/Nizam




From: "Benjamin Kramer" <benn...@gmail.com>
To: ni...@cse.iitm.ac.in
Cc: "llvmdev" <llv...@cs.uiuc.edu>
Sent: Saturday, February 1, 2014 9:57:00 PM
Subject: Re: [LLVMdev] Eliminate SSA Virtual registers

ni...@cse.iitm.ac.in

unread,
Feb 1, 2014, 11:57:15 AM2/1/14
to Benjamin Kramer, llvmdev
I mean to say didnt help. :) 


From: ni...@cse.iitm.ac.in
To: "Benjamin Kramer" <benn...@gmail.com>
Cc: "llvmdev" <llv...@cs.uiuc.edu>
Sent: Saturday, February 1, 2014 9:53:55 PM

Jeremy Lakeman

unread,
Feb 1, 2014, 6:52:05 PM2/1/14
to ni...@cse.iitm.ac.in, Benjamin Kramer, llvmdev
The reg2mem pass only eliminates phi nodes, using the stack to pass values between basic blocks.
LLVM models a register based CPU, not a stack based one. All calculations are assumed to be performed in registers with the arguments and results loaded and stored from the stack.

What other constraints are you hoping to enforce on your flavour of IR?
Reply all
Reply to author
Forward
0 new messages