[LLVMdev] Where is liveness analysis pass?

Zhanglin Liu way_lzl at sina.com
Thu Jan 13 00:42:48 PST 2011


<style id="sinamailpaperfilter">.sinamailpaper-0{cursor:text;}.sinamailpaper-0 td,.sinamailpaper-0 textarea,.sinamailpaper-0 input,.sinamailpaper-0 br,.sinamailpaper-0 div,.sinamailpaper-0 span{font-size:14px;font-family:"宋体",Verdana,Arial,Helvetica,sans-serif;line-height:1.5;}.sinamailpaper-0 p{/**margin:0.2em auto;*/margin:0px;}.sinamailpaper-0 img{border:0;}.sinamailpaper-0 pre{white-space:normal;}.sinamailpaper-0 form{margin:0;}body{font-size:14px;}p{margin:0px;}</style>Jin-Gu<BR><BR>Thanks for your suggestion. Using the liveness information for virtual register is a good idea, but what I working on is a source-to-source converter, so I'd rather not to use any MachineFunctionPass. <BR><BR>Actually Google has told me a <BR><BR>------------------------------------------------<BR>--Zhanglin<BR>----- Original Message -----<BR>From: Jin Gu Kang <jaykang10 at imrc.kist.re.kr><BR>To: Zhanglin Liu <way_lzl at sina.com><BR>Subject: RE: [LLVMdev] Where is liveness analysis pass?<BR>Date: 2011-1-13 16:28:59<BR><BR>Hi Zhanglin.<BR><BR>First I suggest to read http://llvm.org/docs/CodeGenerator.html#liveintervals. :)<BR><BR>I saw the basic processing order of Live interval in backend LLVM source code as following:<BR>1. LiveVariables::runOnMachineFunction() "lib/CodeGen/LiveVariables.cpp"<BR>--> This pass computes live variable information for each virtual register and register allocatable physical register in the function. (Target dependent)<BR>2. SlotIndexes::runOnMachineFunction() "lib/CodeGen/SlotIndexe
s.cpp"<BR>--> This pass assigns indexes to each instruction and basic blocks<BR>3. LiveIntervals::runOnMachineFunction() "lib/CodeGen/LiveIntervalAnalysis.cpp"<BR>--> This pass computes live interval for live variables.<BR>4. SimpleRegisterCoalescing::runOnMachineFunction "lib/CodeGen/SimpleRegisterCoalescing.cpp" <BR>-> After SimpleRegisterCoalescing, live intervals are merged.<BR><BR>As you know, liveness inforamtion in backend is target dependent.<BR>If you want to use target independent liveness information, I suggest you to use live variable information for virtual register in "LiveVariables::runOnMachineFunction()" pass.<BR><BR>Best regards,<BR>Jin-Gu Kang<BR><BR><BR><BR><BR><BR><BR>________________________________________<BR>From: llvmdev-bounces at cs.uiuc.edu [llvmdev-bounces at cs.uiuc.edu] On Behalf Of Zhanglin Liu [way_lzl at sina.com]<BR>Sent: Thursday, January 13, 2011 4:16 PM<BR>To: llvmdev at cs.uiuc.edu<BR>Subject: [LLVMdev] Where is liveness analysis pass?<BR><BR>Hello all<BR><BR>Currently I want to use the accurate liveness information when writing a *target independent* FunctionPass based on LLVM. The one I can find is LiveValues, a FunctionPass. But it doesn't use classic dataflow equation and can only provide approximate and conservative result. The another one is LiveVariables which use classic data flow equation, but&nbs
p;it comes from Clang's analysis phase and only used in frontend.<BR><BR>My question is whether there is such a liveness analysis pass existed for FuntionPass?<BR><BR>Thanks for any suggestion.<BR>--------------------------------<BR>--Zhanglin 




More information about the llvm-dev mailing list