[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