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