[PATCH, i386]: Partially fix PR 38151

Uros Bizjak ubizjak@gmail.com
Wed Nov 19 21:24:00 GMT 2008


Hello!

There is a problem with x86_64 merged argument passing when agregates 
are involved. The problem is, that we don't account for cases, where 
argument register crosses argument register boundary, i.e. when merging 
32bit and 64bit values.

classify_argument () function should return classes for both parts since 
the second value is now passed in two registers.

2008-11-19  Uros Bizjak  <ubizjak@gmail.com>

    PR target/38151
    * config/i386/i386.c (classify_argument) [integer mode size <= 64bit]:
    Handle cases when integer argument crosses argument register boundary.

testsuite/ChangeLog:

2008-11-19  Uros Bizjak  <ubizjak@gmail.com>

    PR target/38151
    * gcc.target/i386/pr38151-1.c: New test.

Attached patch was bootstrapped and regression tested on 
x86_64-pc-linux-gnu {,-m32}. The patch is however not enough to fully 
fix the PR, since the problem remains for va_arg arguments. Will look 
tomorrow.

Uros.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: p.diff.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20081119/e3913681/attachment.txt>


More information about the Gcc-patches mailing list