[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