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? 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