public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Sandra Loosemore <sandra@codesourcery.com>
To: "H.J. Lu" <hjl.tools@gmail.com>
Cc: "fortran@gcc.gnu.org" <fortran@gcc.gnu.org>,
	"gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>,
	Christophe Lyon <christophe.lyon.oss@gmail.com>,
	Sunil K Pandey <skpgkp2@gmail.com>
Subject: Re: [PATCH, Fortran] Skip gfortran.dg/PR100914.f90 on targets that don't provide quadmath.h
Date: Sun, 5 Sep 2021 23:20:58 -0600	[thread overview]
Message-ID: <d94f5b69-b657-3302-6c26-efb70e8d61be@codesourcery.com> (raw)
In-Reply-To: <CAMe9rOqzmvQ+zQ8y4B6quuy6Y2oDX1F+ajV36-y-Qen1hJTd0g@mail.gmail.com>

On 9/5/21 7:29 PM, H.J. Lu wrote:
> On Sun, Sep 5, 2021 at 11:02 AM Sandra Loosemore
> <sandra@codesourcery.com> wrote:
>>
>> On 9/5/21 7:31 AM, H.J. Lu wrote:
>>> On Sat, Sep 4, 2021 at 7:31 PM Sandra Loosemore <sandra@codesourcery.com> wrote:
>>>>
>>>> The testcase gfortran.dg/PR100914.f90 that I recently checked in
>>>> (originally written by José Rui Faustino de Sousa) depends on the
>>>> <quadmath.h> header file to obtain a typedef for __complex128.  It
>>>> appears not to be possible to define an equivalent type in a portable
>>>> way in the testcase itself (see
>>>> https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/Floating-Types.html) so
>>>> this patch skips the test entirely on targets where quadmath.h is not
>>>> available.
>>>>
>>>> The target-supports.exp change was cut-and-pasted from similar code in
>>>> that file, but I haven't figured out how to test this change in a build
>>>> that doesn't provide quadmath.h (e.g., my aarch64-linux-gnu toolchain
>>>> build attempt croaked with an unrelated compilation error in glibc).
>>>> Perhaps someone who previously encountered the FAILs on this testcase
>>>> can confirm that it's skipped with this change?
>>>
>>> Since libqaudmath provides <quadmath.h>, I prefer either of 2 patches
>>> enclosed here.
>>
>> Of these two, the first one looks better to me, and seems to work OK in
>> my x86 build.  But, I'm not sure it is the right thing for ARM/Aarch64
>> targets, which apparently have _Float128 support without the __float128
>> type or libquadmath.  It's pretty clear quadmath.h depends on having
>> __float128.
> 
> The only <quadmath.h> used by GCC is the one in libquadmath.  I
> will check in my first patch tomorrow if there are no objections.
> 
>> See Christophe's mail here:
>>
>> https://gcc.gnu.org/pipermail/fortran/2021-September/056467.html
>>
>> As I said in my last mail, I ran into some problems getting an aarch64
>> toolchain built so I haven't been able to do any testing or experiments
>> on that target myself yet.  :-(

I finally got an aarch64-linux-gnu toolchain built and confirmed that it 
is still broken there:  it indeed does not define __float128, and 
including quadmath.h results in a gazillion errors like

/path/to/quadmath.h:47:8: error: unknown type name '__float128'

I also observed that _Float128 is the same type as long double on this 
target.

Unless the aarch64 maintainers think it is a bug that __float128 is not 
supported, I think the right solution here is the one I was thinking of 
previously, to fix the Fortran front end to tie the C_FLOAT128 kind to 
_Float128 rather than __float128, and fix the runtime support and test 
cases accordingly.  Then there should be no need to depend on quadmath.h 
at all.  C_FLOAT128 is a GNU extension and _Float128 is supported on a 
superset of targets that __float128 is, so there should be no issue with 
backward compatibility.

-Sandra

  reply	other threads:[~2021-09-06  5:21 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-05  2:30 Sandra Loosemore
2021-09-05 13:31 ` H.J. Lu
2021-09-05 18:02   ` Sandra Loosemore
2021-09-06  1:29     ` H.J. Lu
2021-09-06  5:20       ` Sandra Loosemore [this message]
2021-09-06  7:06         ` Christophe Lyon
2021-09-06 10:18         ` Tobias Burnus
2021-09-06 16:31         ` Joseph Myers
2021-09-17  4:02         ` [PATCH, Fortran] Use _Float128 rather than __float128 for c_float128 kind Sandra Loosemore
2021-09-17  8:27           ` Tobias Burnus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d94f5b69-b657-3302-6c26-efb70e8d61be@codesourcery.com \
    --to=sandra@codesourcery.com \
    --cc=christophe.lyon.oss@gmail.com \
    --cc=fortran@gcc.gnu.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hjl.tools@gmail.com \
    --cc=skpgkp2@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).