[cfe-commits] r66277 - in /cfe/trunk: lib/CodeGen/CGCall.cpp test/CodeGen/x86_64-arguments.c

Daniel Dunbar daniel at zuster.org
Fri Mar 6 12:08:33 PST 2009


On Fri, Mar 6, 2009 at 10:01 AM, Eli Friedman <eli.friedman at gmail.com> wrote:
> On Fri, Mar 6, 2009 at 9:50 AM, Daniel Dunbar <daniel at zuster.org> wrote:
>> +    // If X87Up is preceeded by X87, we don't need to do
>> +    // anything. However, in some cases with unions it may not be
>> +    // preceeded by X87. In such situations we follow gcc and pass the
>> +    // extra bits in an SSE reg.
>
> See http://gcc.gnu.org/ml/gcc-patches/2009-02/msg00137.html ?

Sigh, no. Makes sense, since passing long double partially in
registers is bogus. However, the situation now is that we match
llvm-gcc which is a partial good thing.

I don't really know how to deal with these issues. Suggestions?

This issue would be easy enough to support both modes in codegen, and
allow the user to choose the behavior. For that to be effective, we
would really want Sema support for issuing diagnostics on ambiguous
uses. I'm not sure its worth the effort, and this isn't really a great
strategy unless we cared enough to do a good job of supporting various
incarnations of ABI compatibility (which I would prefer not to do).

PR3448 is worth mentioning here; and llvm-gcc has a number of
incompatibilities with gcc 4.2 for vectors.

 - Daniel

> -Eli
>




More information about the cfe-commits mailing list