Hello, I have recently been working on scheduling for register pressure and ran into the issue of alias analysis when trying to integrate it with LLVM. Looking at the code it seems that the pre register allocation scheduling doesn't use alias analysis information. On the contrary, post-RA uses it. I'm wondering if there is a good reason for this fact. Indeed, it seems to me that alias analysis would be much more useful before register allocation when the scheduler still has the opportunity to really move the memory related instructions. Am I missing something ? Wouldn't it be possible to use alias analysis when building the pre-RA schedule graph ? Regards Amaury Pouly -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100722/64d1b53f/attachment.html>
Building llvm is failing for me today. I am using clang++ to build (which has not changed). llvm[2]: Compiling EDMain.cpp for Debug+Asserts build (PIC) EDMain.cpp:267:39: error: C-style cast from '::EDTokenVisitor_t' (aka 'int (^)(EDTokenRef)') to 'llvm::EDTokenVisitor_t' (aka 'int (^) (llvm::EDToken *)') is not allowed return ((EDInst*)inst)->visitTokens((llvm::EDTokenVisitor_t)visitor); ^~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. make[2]: *** [/Volumes/sandbox/llvm/tools/edis/Debug+Asserts/EDMain.o] Error 1 - Fariborz
On Jul 22, 2010, at 7:42 AM, Amaury Pouly wrote:> Hello, > I have recently been working on scheduling for register pressure and ran into the issue of alias analysis when trying to integrate it with LLVM. > Looking at the code it seems that the pre register allocation scheduling doesn't use alias analysis information. On the contrary, post-RA uses it. > I'm wondering if there is a good reason for this fact. Indeed, it seems to me that alias analysis would be much more useful before register allocation when the scheduler still has the opportunity to really move the memory related instructions. > Am I missing something ? Wouldn't it be possible to use alias analysis when building the pre-RA schedule graph ?I don't consider this a scheduling issue. The real problem is in instruction selection. When sdiel builds the DAG it doesn't eliminate the "chains" between memory SDNodes which do not alias. This is something we want to do but just haven't gotten to it. Evan> > Regards > > Amaury Pouly > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
On Jul 22, 2010, at 8:57 AM, Fariborz Jahanian wrote:> > Building llvm is failing for me today. I am using clang++ to build > (which has not changed). > > llvm[2]: Compiling EDMain.cpp for Debug+Asserts build (PIC) > EDMain.cpp:267:39: error: C-style cast from '::EDTokenVisitor_t' (aka > 'int (^)(EDTokenRef)') to 'llvm::EDTokenVisitor_t' (aka 'int (^) > (llvm::EDToken *)') is not allowed > return ((EDInst*)inst)->visitTokens((llvm::EDTokenVisitor_t)visitor); > ^~~~~~~~~~~~~~~~~~~~~~~~ > 1 error generated. > make[2]: *** [/Volumes/sandbox/llvm/tools/edis/Debug+Asserts/EDMain.o] > Error 1Tried a reconfigure? -eric