Code generation issues

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"(memOpStack_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)

Hi Bram,

Could you submit bug reports for all of these problems?

Thanks!
-bw

I was poking around, but I didn't spot a PayPal link for the t-shirts and/or supporting LLVM. Any follow-up from the pre-meeting discussions?
-Gabe

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

The C backend doesn't support all target-specific intrinsics.

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?

Please file a bug with this in a self-contained .c file. Thanks!

3) Regarding bug 1446 (1446 – scalarrepl decimates giant struct):
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:

Very strange. Is everything up to date?

-Chris

Hi,

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

The C backend doesn't support all target-specific intrinsics.

OK (1481 – CBE doesn't support some target intrinsics).

Please file a bug with this in a self-contained .c file. Thanks!

Has happened: http://llvm.org/bugs/show_bug.cgi?id=1482.

Very strange. Is everything up to date?

Yes, I applied your patch but it still hangs on -O3, not on -O0 (http://llvm.org/bugs/show_bug.cgi?id=1446).

Kind regards,

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

Did you recompile llvm-gcc after updating llvm?

-Chris

Hi,

All,

Anyone who wishes to donate to the project can follow the directions for
sending a check here:

http://llvm.org/Funding.html

If you can only pay by PayPal or credit card, PLEASE write to Vikram
Adve (vadve@uiuc.edu) and ask him to update that page with the alternate
payment details.

FYI: while the T-Shirts provided at the meeting were "free", they were
offered in the hope that there would be donations made in kind. The
T-Shirts cost about $20.00US. If you feel like making a donation to the
project, please use the directions on the Funding page. Please do NOT
send any money to me! :slight_smile:

Reid.

We are working on setting up credit card payment right now.

–Vikram
http://www.cs.uiuc.edu/~vadve
http://llvm.cs.uiuc.edu/