On Thu, Jul 28, 2011 at 11:49 AM, Uros Bizjak <ubiz...@gmail.com> wrote: > On Thu, Jul 28, 2011 at 8:32 PM, H.J. Lu <hjl.to...@gmail.com> wrote: > >>>>>>>> > convert_memory_address_addr_space has a special PLUS/MULT case for >>>>>>>> > POINTERS_EXTEND_UNSIGNED< 0. ?It turns out that it is also needed >>>>>>>> > for all Pmode != ptr_mode cases. ?OK for trunk? >>>>>>>> > 2011-06-11 ?H.J. Lu ?<hongjiu...@intel.com> >>>>>>>> > >>>>>>>> > ? ? ? ?PR middle-end/47727 >>>>>>>> > ? ? ? ?* explow.c (convert_memory_address_addr_space): Permute the >>>>>>>> > ? ? ? ?conversion and addition if one operand is a constant. >>>>>>>> >>>>>>>> Do we still need this patch? With recent target changes the testcase >>>>>>>> from PR can be compiled without problems with a gcc from an unpatched >>>>>>>> trunk. >>>>>>> >>>>>>> Given the communication difficulties, I hope not... >>>>>>> >>>>>>> Paolo >>>>>>> >>>>>> >>>>>> Here is the updated patch. OK for trunk? >>>>> >>>>> Did you see the question two levels up the thread you are replying to? >>>>> >>>> >>>> The patch is for >>>> >>>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49721 >>>> >>>> I changed the thread subject. >>> >>> Please add testcase to see the patch in action. >>> >> >> I haven't found a testcase yet. The problem was discovered in >> this thread: >> >> http://gcc.gnu.org/ml/gcc-patches/2011-07/msg01065.html > > This was before x32 could handle SImode addresses. With recent x86 > target work, this is no more true, and SImode and DImode addresses are > first-class citizens as far as x32 backend is concerned. Please note > that original testcase (that this whole patch is all about) now > compiles without problems. Also, middle end is shared with at least > two ptr_mode != Pmode targets, and they all work well. So, to see what > makes x32 special, we need a testcase that breaks _WITHOUT_ your > proposed patch. Without testcase, nobody can analyze your approach and > tell if the approach is the right one, if this is in fact target > problem, or indeed a middle-end problem. >
There are 2 issues 1. rtl_hooks.gen_lowpart_no_emit vs gen_lowpart. simplify-rtx.c shouldn't generate any new insns. 2. convert_memory_address_addr_space shouldn't permute conversion and addition. -- H.J.