This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Use the middle-end boolean_type_node
- From: Janne Blomqvist <blomqvist dot janne at gmail dot com>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: vogt at linux dot vnet dot ibm dot com, Fortran List <fortran at gcc dot gnu dot org>, GCC Patches <gcc-patches at gcc dot gnu dot org>, Andreas Krebbel <krebbel at linux dot vnet dot ibm dot com>
- Date: Tue, 3 Jan 2017 16:31:04 +0200
- Subject: Re: [PATCH] Use the middle-end boolean_type_node
- Authentication-results: sourceware.org; auth=none
- References: <1481662749-31499-1-git-send-email-blomqvist.janne@gmail.com> <20170103141446.GA1354@linux.vnet.ibm.com> <20170103142026.GV21933@tucnak>
On Tue, Jan 3, 2017 at 4:20 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Tue, Jan 03, 2017 at 03:14:46PM +0100, Dominik Vogt wrote:
>> This patch costs several thousand additional instructions in
>> Spec2006 on s390x ("lines" = instructions):
>>
>> 410.bwaves: +28 lines (2 funcs bigger)
>> 437.leslie3d: +43 lines (5 funcs bigger)
>> 434.zeusmp: +2650 lines (15 funcs bigger)
>> 459.GemsFDTD: +65 lines (7 funcs bigger)
>> 454.calculix: +474 lines (23 funcs bigger)
>> 465.tonto: +2182 lines (221 funcs bigger)
>> 481.wrf: +4988 lines (117 funcs bigger)
>> 416.gamess: +3723 lines (466 funcs bigger)
>>
>> s390x has a "compare with immediate and jump relative" instruction
>> for 32 bit, but for an 8 bit quantities it needs separate compare
>> and jump instructions, e.g.
>>
>> cijne %r1,0,... <bi_cgstab_block_+0xfe2>
>>
>> ->
>>
>> tmll %r1,1
>> jne ... <bi_cgstab_block_+0xfe6>
>>
>> Instead of hard coding a specific type, should one ask the backend
>> for the preferred type?
Hmm, that's sort of the opposite of what I had hoped for.. :-/
Is there some way to ask the backend what the preferred type is, then?
(The snide answer, why didn't the s390 ABi define
bool/_Bool/boolean_type_node to be a 32 bit type if 8 bit types are
problematic? But that's of course water under the bridge by now...)
> The gfc_init_types change is an ABI change, at least if the fortran FE
> bool type is ever stored in memory and accessed by multiple TUs, or
> passed as argument etc.
Based on the quick audit I did when I wrote the patch, the only time
it's used except as a local temp variable, is for a couple of the
co-array intrinsics, where the corresponding library implementation
actually uses C _Bool (I suspect it has worked by accident if the args
are passed in registers).
> And the difference between the C/C++ _Bool/bool
> and fortran FE bool has caused lots of issues in the past, so if it can be
> the same type, it is preferrable.
>
> Jakub
--
Janne Blomqvist