This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: divmod transform: add test-cases


On 12 August 2016 at 12:47, Richard Biener <rguenther@suse.de> wrote:
> On Thu, 11 Aug 2016, Jeff Law wrote:
>
>> On 08/09/2016 04:58 AM, Prathamesh Kulkarni wrote:
>> > ping https://gcc.gnu.org/ml/gcc-patches/2016-07/msg01869.html
>> This seems to be dependent upon other patches, this is not OK until all
>> prereqs are resolved.
>>
>> You're using SI/DI in the descriptions, but then using more traditional C
>> types like int, unsigned, long long in the actual test.
>>
>> If you intent is really to nail down SI/DI mode testing, then the way to go
>> will be to define typedefs that correspond directly to SI and DI modes:
>>
>> typedef unsigned int u32 __attribute__((mode(SI)));
>> typedef signed int s32 __attribute__((mode(SI)));
>>
>> You can do something similar for DImode.
>>
>> It may not matter because of your effective-target {divmod,divmod_simode}
>> selectors, but it still seems cleaner.
>>
>> With that change, this is OK when its prereqs are resolved.
>
> Note that for the main patch I don't like the current state of the
> divmod libcall issue.  I think we need to solve this in a more
> reasonable manner and not expose this oddness to a GIMPLE level pass.
>
> Any ideas welcome - I don't have a very good one :/
>
> The best idea I have is to not lie about libfunc availability in
> the optab handler.
Hi,
In the attached patch I set libfunc entry for sdivmod_optab to NULL
and verified that optab_libfunc (sdivmod_optab, DImode) returns NULL_RTX
if it's not overriden by the target.

AFAIU this issue could be latent in expand_twoval_binop_libfunc,
and apparently never got triggered for the default case, where target
doesn't override
optab_libfunc (sdivmod_optab, DImode) else it could have generated
call to __divmoddi4() which doesn't exist

Bootstrapped and tested on ppc64le-linux-gnu,
Cross-tested on arm*-*-*, aarch64*-*-*.
Bootstrap+test in progress on x86_64-unknown-linux-gnu.

OK to commit if passes ?

Thanks,
Prathamesh
>
> Richard.

Attachment: sdivmod_optab.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]