[LLVMdev] hello world error
Ankit Sethia
asethia at eecs.umich.edu
Wed Jun 29 13:20:42 PDT 2011
Hi,
I found that machine dead code elimination, does not respect the calling
convention of alpha and eliminates r16, which was set correctly during code
generation. I verified it with -print-after-all.
Does anybody have a patch for this?
On Wed, Jun 29, 2011 at 11:12 AM, Ankit Sethia <asethia at eecs.umich.edu>wrote:
> Hi All,
>
> I am using llvm-2.9 to cross compile to alpha. I know that alpha is in
> experimental stage, but i can not get even the "Hello World" program to run
> on it.
>
> Here is what happens, the bitcode file for the hello world program is as
> follow:
>
> ; ModuleID = 'hello.bc'
> target datalayout =
> "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
> target triple = "x86_64-unknown-linux-gnu"
>
> @.str = private constant [12 x i8] c"Hello World\00", align 1
>
> define i32 @main() nounwind {
> entry:
> %retval = alloca i32
> %0 = alloca i32
> %"alloca point" = bitcast i32 0 to i32
> *%1 = call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @.str, i64
> 0, i64 0)) nounwind*
> store i32 0, i32* %0, align 4
> %2 = load i32* %0, align 4
> store i32 %2, i32* %retval, align 4
> br label %return
>
> return: ; preds = %entry
> %retval1 = load i32* %retval
> ret i32 %retval1
> }
>
> declare i32 @puts(i8*)
>
> The .str is present in the argument to the puts function in %1 is present
> in the bitcode.
> But when i use llc to change the bitcode to alpha assembly, i get the
> following:
>
>
> ldah $29,0($27) !gpdisp!1
> lda $29,0($29) !gpdisp!1
> $main..ng:
> lda $30,-32($30)
> stq $9,24($30)
> stq $11,16($30)
> bis $26,$26,$9
> * ldq $27,puts($29) * !literal
> lda $11,8($30)
> jsr $26,($27),0
>
>
> The puts call is there, but register 16 which i believe is supposed to have
> the arguments to a function call is not set.
> If i manually add the line to the assembly,
>
> lda $16, $.str($29)
>
> where $.str is defined in the assembly to be the appropriate string, it
> works fine, and i get the hello world output.
> It seems that for some reason llc is not setting the argument of the
> function call.
>
> Are there any tests for alpha assembly that presently work with function
> call? I would like to confirm that something with alpha is working.
>
>
>
>
> --
> Ankit
>
--
Ankit
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110629/b6e77d84/attachment.html>
More information about the llvm-dev
mailing list