Hi,

On Wed, Oct 07, 2015 at 05:04:13PM +0200, Rainer Orth wrote:
> Jan Hubicka <hubi...@ucw.cz> writes:
> 
> >> Hi,
> >> 
> >> I have already proposed this patch many months ago but it got
> >> forgotten, for a number of reasons.  It does not change functionality,
> >> it only cleans up the alignment lattices, which are currently a bit
> >> clumsy.
> >> 
> >> I have refreshed the patch and made sure it still bootstraps and tests
> >> fine on an x86_64-linux.  OK for trunk?
> >> 
> >> Thanks,
> >> 
> >> Martin
> >> 
> >> 
> >> 2015-02-25  Martin Jambor  <mjam...@suse.cz>
> >>        Jan Hubicka  <hubi...@ucw.cz>
> >> 
> >>    * ipa-cp.c (ipcp_alignment_lattice): New type.
> >>    (ipcp_param_lattices): Use the above to represent alignment.
> >>    (ipcp_alignment_lattice::print): New function.
> >>    (print_all_lattices): Use it to print alignment information.
> >>    (ipcp_alignment_lattice::top_p): New function.
> >>    (ipcp_alignment_lattice::bottom_p): Likewise.
> >>    (ipcp_alignment_lattice::set_to_bottom): Likewise.
> >>    (ipcp_alignment_lattice::meet_with_1): Likewise.
> >>    (ipcp_alignment_lattice::meet_with): Two new overloaded functions.
> >>    (set_all_contains_variable): Use set_to_bottom of alignment lattice.
> >>    (initialize_node_lattices): Likewise.
> >>    (propagate_alignment_accross_jump_function): Work with the new class
> >>    for alignment lattices.
> >>    (propagate_constants_accross_call): Pass only the alignment lattice to
> >>    propagate_alignment_accross_jump_function.
> >>    (ipcp_store_alignment_results): Work with the new class for alignment
> >>    lattices.
> >> 
> >> testsuite/
> >>    * gcc.dg/ipa/propalign-4.c: New test.
> >>    * gcc.dg/ipa/propalign-5.c: Likewise.
> >
> > OK,
> > Honza
> 
> This patch broke Solaris bootstrap in stage 1 with g++ 4.9:
> 
> /vol/gcc/src/hg/trunk/solaris/gcc/ipa-cp.c: In member function 'bool 
> ipcp_alignment_lattice::meet_with_1(unsigned int, unsigned int)':
> /vol/gcc/src/hg/trunk/solaris/gcc/ipa-cp.c:855:56: error: call of overloaded 
> 'abs(unsigned int)' is ambiguous
>        int diff = abs (misalign - (new_misalign % align));

Calling abs on an unsigned type does not sound right anyway (that
almost sounds like a good candidate for a warning).  I suppose the
correct fix is to cast both subtraction operands to signed int, would
such a change be pre-approved?

Martin

>                                                         ^
> /vol/gcc/src/hg/trunk/solaris/gcc/ipa-cp.c:855:56: note: candidates are:
> In file included from /usr/include/stdlib.h:12:0,
>                  from /vol/gcc-4.9/include/c++/4.9.0/cstdlib:72,
>                  from /vol/gcc-4.9/include/c++/4.9.0/bits/stl_algo.h:59,
>                  from /vol/gcc-4.9/include/c++/4.9.0/algorithm:62,
>                  from /vol/gcc/src/hg/trunk/solaris/gcc/system.h:218,
>                  from /vol/gcc/src/hg/trunk/solaris/gcc/ipa-cp.c:104:
> /usr/include/iso/stdlib_iso.h:225:16: note: long int std::abs(long int)
>   inline long   abs(long _l) { return labs(_l); }
>                 ^
> /usr/include/iso/stdlib_iso.h:180:12: note: int std::abs(int)
>  extern int abs(int);
>             ^
> 
>       Rainer
> 
> -- 
> -----------------------------------------------------------------------------
> Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to