https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23782
--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> --- After my patch, we get: ``` void drawbutton (struct coord upperleft, struct coord lowerright, unsigned int upperleftcolor, unsigned int lowerrightrcolor, unsigned int fillcolor, unsigned int drawbackground) { short unsigned int lowerright$x; struct coord D.3029; unsigned int _15; <bb 2> [local count: 1073741824]: _15 = MEM <unsigned int> [(short unsigned int *)&upperleft]; lowerright$x_4 = lowerright.x; setpixel (upperleft, upperleftcolor_3(D)); if (drawbackground_5(D) != 0) goto <bb 3>; [33.00%] else goto <bb 4>; [67.00%] <bb 3> [local count: 354334800]: MEM <unsigned int> [(short unsigned int *)&D.3029] = _15; plotHline (D.3029, lowerright$x_4, fillcolor_6(D)); <bb 4> [local count: 1073741824]: setpixel (lowerright, lowerrightrcolor_8(D)); [tail call] return; } ``` Which is better, just missing forming of upperleft but that is a different issue and the original testcase had a different form.