[cfe-dev] clang builds on Sparc/Linux!
Kelly Wilson
wilsonk at cpsc.ucalgary.ca
Tue Jul 24 02:10:07 PDT 2007
Hello everyone,
I am not sure if this is the correct list for this, but I think so,
because llvm-gcc didn't build error-free on Sparc/Linux last time I
tried....but clang does!
I am running an Enterprise 250 with Dual UltraSparc II's and 2 Gb ram
running Aurora Sparc Linux 2.0 (2.6.13 kernel for Aurora is based on
Fedora Core 3). GCC version 3.4.2.
I built llvm-2.0 (not the svn version but the download version) by just
typing "./configure;make". I then downloaded clang from the svn
repository (revision 40382) and changed to it's directory
under .../llvm/tools/clang. I did a "make" without incident for clang,
as well. Woohoo.
I tried a few examples and everything seemed to work fine, as far as
llvm, some simple clang functionality and the JIT examples go. Then I
ran this contrived example through clang and llvm:
int x;
int func1 (int g) {
return g;
}
int main()
{
printf("Hello World %d times\n", func1(5));
}
with this command:
clang ./ex1.c -emit-llvm | llvm-as | opt -std-compile-opts | llc
-march=sparc > ex1.S
This worked fine and the code gen looked fine, except for two things:
.text
.align 16
.globl func1
.type func1, #function
func1:
save -96, %o6, %o6<---------------change
restore %g0, %g0, %g0
retl
nop
.align 16
.globl main
.type main, #function
main:
save -96, %o6, %o6<---------------change
sethi %hi(.str), %l0
add %l0, %lo(.str), %o0
or %g0, 5, %o1
call printf
nop
!IMPLICIT_DEF %i0
restore %g0, %g0, %g0
retl
nop
.globl x
.bss <-------------------------------------remove
.align 4
.type x,#object
.size x,4
x:
.skip 4
.data
.align 1
.type .str,#object
.size .str,22
.str:
.asciz "Hello World %d times\n"
The two problems with this output. "save -96, %o6, %o6" should read
"save %o6, -96, %o6" at both function entry points, and the ".bss"
section identifier needs to be removed. THEN GCC CAN ASSEMBLE/LINK THIS
AND IT RUNS!!!!! Cool, now you have a new OS/arch pair to run LLVM on,
though I may be the only one running this pair ;)
Let me know if anyone wants anymore information. I will do some more
testing and let you know how it goes.
Thanks,
Kelly Wilson
P.S. Maybe I should cross-post this to llvm-dev so that the Sparc
backend writers can see it? I also have a couple very small diff's to
fix these two problems in the Sparc backend...should I post them to
llvm-dev?
More information about the cfe-dev
mailing list