STV is interested in DU/UD chains only but for some reason (since first patch submission) adds MD. I can't make any sense of this and in fact I miss the difference between RD and MD. The only other user of MD is fwprop which says
/* We use the multiple definitions problem to compute our restricted use-def chains. */ but does not add the chain problems (only md and note), instead it /* Walk the dominator tree looking for single reaching definitions dominating the uses. This is similar to how SSA form is built. */ talking about "reaching definitions" again. The comments in df-problems.c do not talk about differences between MD and RD, the first sentences suggest that MD does not compute anything if there's just a single reaching definition? It also doesn't talk about relative cost of the two problems. RD doesn't seem to be used on its own by anyone. Well. The following patch removes MD from STV, bootstrapped and tested on x86_64-unknown-linux-gnu with Westmere arch and STV forced on. OK? Thanks, Richard. 2019-08-28 Richard Biener <rguent...@suse.de> * config/i386/i386-features.c (convert_scalars_to_vector): Do not add the MD problem. Index: gcc/config/i386/i386-features.c =================================================================== --- gcc/config/i386/i386-features.c (revision 274983) +++ gcc/config/i386/i386-features.c (working copy) @@ -1564,7 +1570,6 @@ convert_scalars_to_vector (bool timode_p calculate_dominance_info (CDI_DOMINATORS); df_set_flags (DF_DEFER_INSN_RESCAN); df_chain_add_problem (DF_DU_CHAIN | DF_UD_CHAIN); - df_md_add_problem (); df_analyze (); /* Find all instructions we want to convert into vector mode. */