On Wed, Jun 10, 2015 at 2:24 AM, Alexandre Oliva <aol...@redhat.com> wrote: > On Jun 5, 2015, Alexandre Oliva <aol...@redhat.com> wrote: > >> On Apr 27, 2015, Richard Biener <richard.guent...@gmail.com> wrote: > >>>> +/* Return the promoted mode for name. If it is a named SSA_NAME, it >>>> + is the same as promote_decl_mode. Otherwise, it is the promoted >>>> + mode of a temp decl of same type as the SSA_NAME, if we had created >>>> + one. */ >>>> + >>>> +machine_mode >>>> +promote_ssa_mode (const_tree name, int *punsignedp) >>>> +{ >>>> + gcc_assert (TREE_CODE (name) == SSA_NAME); >>>> + >>>> + if (SSA_NAME_VAR (name)) >>>> + return promote_decl_mode (SSA_NAME_VAR (name), punsignedp); > >>> As above I'd rather not have different paths for anonymous vs. non-anonymous >>> vars (so just delete the above two lines). > >> Check > > This caused the sparc regression reported by Eric in > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64164#c37 > > We need to match the mode of the rtl created for the partition and the > promoted mode expected for the parm. I recall working to make parm and > result decls the partition leaders, so that promote_ssa_mode would DTRT, > but this escaped my mind when revisiting the patch after some time on > another project. > > So we either restore promote_ssa_mode's check for an underlying decl, at > least for PARM_ and RESULT_DECLs, or further massage function.c to deal > with the mode difference. Any preference?
Alternatively not coalesce SSA names when promote_decl_mode gives different answers (for their underlying decl)? It sounds wrong to do that (if that is really what happens). Richard. > I'm reverting the patch for now, so that we don't have to rush to a fix > on this, and I can have more time to test and fix other arches. It was > a terrible mistake to not do so before submitting the final version of > the patch, or at least before installing it. I apologize for that. > > -- > Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/ > You must be the change you wish to see in the world. -- Gandhi > Be Free! -- http://FSFLA.org/ FSF Latin America board member > Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer