Fortran vector math header
Martin Liška
mliska@suse.cz
Fri Jan 18 08:18:00 GMT 2019
On 1/16/19 9:35 PM, Joseph Myers wrote:
> On Wed, 16 Jan 2019, Jakub Jelinek wrote:
>
>> Perhaps easier would be to add optional if clause to the !GCC$ builtin
>> with constant expression argument which if present and evaluates to .false.
>> would tell us to ignore the attribute. Or, add !GCC$ if/else/end if which
>> would act like preprocessing conditionals or something similar.
>> Not really sure one can query in Fortran what the multilib is some way (say
>> look at size of a pointer etc.).
>
> If something like that is done, I'd suggest doing it in a form which
> allows each multilib's information about glibc functions to go in a
> separate generated header (so having !GCC$ include or similar to include a
> per-multilib file, under appropriate conditionals). Otherwise you need to
> bring back logic in glibc to make a compiler building glibc for one
> multilib use appropriate -D and -U options to get its C headers to define
> things appropriately for another multilib, so that the all-multilib
> Fortran header can be generated in a single glibc build. (Like the old
> logic for generating bits/syscall.h that was removed in commits
> 2dba5ce7b8115d6a2789bf279892263621088e74 and
> ee17d4e99af9e49378217209d3708053ef148032.)
>
Hi.
What about something as simple as this:
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 3314e176881..2f2b965f97d 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -11361,6 +11361,11 @@ gfc_match_gcc_builtin (void)
else if (gfc_match (" ( inbranch ) ") == MATCH_YES)
clause = SIMD_INBRANCH;
+ /* Filter builtins defined only for 64-bit compilation mode. */
+ if (gfc_match (" ( 64bit ) ") == MATCH_YES
+ && tree_to_uhwi (TYPE_SIZE_UNIT (long_integer_type_node)) != 64)
+ return MATCH_YES;
+
if (gfc_vectorized_builtins == NULL)
gfc_vectorized_builtins = new hash_map<nofree_string_hash, int> ();
That would allow to write:
!GCC$ builtin (cos) attributes simd (notinbranch) (64bit)
Thoughts?
Thanks,
Martin
More information about the Gcc-patches
mailing list