[LLVMdev] Code generation issues

Bram Adams bram.adams at ugent.be
Tue May 29 14:29:49 PDT 2007


Hi,

Today I managed to link ioquake3, but generating a binary does not  
work yet.


1) On OSX, I get:

Error: Code generator does not support intrinsic function  
'llvm.ppc.altivec.lvsl'!

when I do:  llc file.bc -march=c -o file.c


2) On Linux X86, llc does not give any problem, but I get this while  
compiling the generated .c file:

error: unknown register name 'S' in 'asm'

This is the offending line (notice the "S" on the last line):

   __asm__ volatile ("\tpushal\t\t\t\t\n\tmovl %0,%%esi\t\t\n\tmovl % 
1,%%edi\t\t\n\tcall *%2\t\t\t\n\tmovl %%esi,%0\t\t\n\tmo\
vl %%edi,%1\t\t\n\tpopal\t\t\t\t\n"
         :"=m"(memProgramStack_2E_5872),"=m"(memOpStack_2E_5873)
         :"m"(memEntryPoint_2E_5874),"m"(memProgramStack_2E_5872),"m"(me 
mOpStack_2E_5873)
         :"D","S");

Apparently, leaving out "S" helps (compiling the .c file works), but  
what does it do and why is it here?


3) Regarding bug 1446 (http://llvm.org/bugs/show_bug.cgi?id=1446):  
the proposed patch for the file called sv_client.c indeed works on  
OSX, but on Linux X86 -O3 it still does not work. More in particular,  
the frontend is now stuck inside the for-loop on lines 176-->391 of  
PromoteMemoryToRegister.cpp when in the control flow of -scalarrepl:

#4  0x08764f72 in (anonymous namespace)::PromoteMem2Reg::run  
(this=0xbff9bfa0)
     at /home/bram/workspace/svn/aspicere2/trunk/llvm/lib/Transforms/ 
Utils/PromoteMemoryToRegister.cpp:271
#5  0x08767021 in llvm::PromoteMemToReg (Allocas=@0xbff9c120,  
ET=@0x8b14c10, DF=@0x8b14d98, AST=0x0)
     at /home/bram/workspace/svn/aspicere2/trunk/llvm/lib/Transforms/ 
Utils/PromoteMemoryToRegister.cpp:812
#6  0x08744713 in (anonymous namespace)::SROA::performPromotion  
(this=0x8b14f38, F=@0x8bc8468)
     at /home/bram/workspace/svn/aspicere2/trunk/llvm/lib/Transforms/ 
Scalar/ScalarReplAggregates.cpp:130
#7  0x087445ba in (anonymous namespace)::SROA::runOnFunction  
(this=0x8b14f38, F=@0x8bc8468)
     at /home/bram/workspace/svn/aspicere2/trunk/llvm/lib/Transforms/ 
Scalar/ScalarReplAggregates.cpp:101
#8  0x08826499 in llvm::FPPassManager::runOnFunction (this=0x8b15d00,  
F=@0x8bc8468)
     at /home/bram/workspace/svn/aspicere2/trunk/llvm/lib/VMCore/ 
PassManager.cpp:1145
#9  0x08826237 in llvm::FunctionPassManagerImpl::run (this=0x8b14e78,  
F=@0x8bc8468)
     at /home/bram/workspace/svn/aspicere2/trunk/llvm/lib/VMCore/ 
PassManager.cpp:1103
#10 0x0882611f in llvm::FunctionPassManager::run (this=0x8b156e8,  
F=@0x8bc8468)
     at /home/bram/workspace/svn/aspicere2/trunk/llvm/lib/VMCore/ 
PassManager.cpp:1048



Kind regards,

Bram Adams
GH-SEL, INTEC, Ghent University (Belgium)



More information about the llvm-dev mailing list