[LLVMdev] Mips backend 3.2 va_arg possible bug
Akira Hatanaka
ahatanak at gmail.com
Wed Feb 27 18:21:47 PST 2013
Could you file a bug?
On Wed, Feb 27, 2013 at 2:47 AM, Stavropoulos Nikos <
n.stavropoulos at think-silicon.com> wrote:
> i have this code
>
> typedef long long L;
> typedef integer I;
> void test2(auto L p0, auto L p1, auto L p2, auto L p4, ...)
> {
> va_list select;
>
> va_start (select, p4);
>
> report( va_arg(select,L) );
> report( va_arg(select,I) );
> report( va_arg(select,L) );
>
> va_end (select);
> }
>
> int main(void)
> {
> test2(1, 2, 3, 4, 5LL, 6, 7LL);
> return 0;
> }
>
> report is just a function that prints the results.
>
> in main the assemply code seems to be ok but in test2 function does
> something that seems to be wrong
>
>
> i use "llc -march=mipsel -relocation-model=static -asm-verbose
> -mattr=+condmov,-muldivadd,+single-float,-fp64,+o32,-bitcount " command
>
> in function we report the values of a long long value then an integer
> value
> and then again a long long
> so the problem is that in the test2 function there is an addiu
> $3, $2, 4
> that causes the third long long value to be read from wrong address.
> mipsel.s <http://llvm.1065342.n5.nabble.com/file/n55498/mipsel.s>
>
> .set nomacro
> # BB#0: # %entry
> addiu $sp, $sp, -24
> sw $ra, 20($sp) # 4-byte Folded Spill
> addiu $2, $sp, 56
> sw $2, 16($sp)
> addiu $2, $2, 8
> sw $2, 16($sp)
> lw $5, 60($sp)
> lw $4, 56($sp)
> jal _Z6reportx
> nop
>
> lw $2, 16($sp)
> #problem starts here
>
> addiu $3, $2, 4
>
> #problem stops here
> sw $3, 16($sp)
> lw $4, 0($2)
> jal _Z6reporti
> nop
> lw $2, 16($sp)
> addiu $3, $2, 8
> sw $3, 16($sp)
> lw $5, 4($2)
> lw $4, 0($2)
>
> jal _Z6reportx
> nop
> lw $ra, 20($sp) # 4-byte Folded Reload
> addiu $sp, $sp, 24
> jr $ra
> nop
> .set macro
> .set reorder
> .end _Z5test2xxxxz
>
>
>
>
> --
> View this message in context:
> http://llvm.1065342.n5.nabble.com/LLVMdev-Mips-backend-3-2-va-arg-possible-bug-tp55498.html
> Sent from the LLVM - Dev mailing list archive at Nabble.com.
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130227/527d69f8/attachment.html>
More information about the llvm-dev
mailing list