https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56365
--- Comment #4 from Oleg Endo <olegendo at gcc dot gnu.org> --- As of r213381 this problem still exists. compiled as C 003t.original: ;; Function min (null) ;; enabled by -tree-original { return MIN_EXPR <b, a>; } ;; Function max (null) ;; enabled by -tree-original { return MAX_EXPR <a, b>; } ;; Function test_04 (null) ;; enabled by -tree-original { return max (-128, min (127, a)); } compiled as C++ 003t.original: ;; Function int min(int, int) (null) ;; enabled by -tree-original return <retval> = a < b ? a : b; ;; Function int max(int, int) (null) ;; enabled by -tree-original return <retval> = a < b ? b : a; ;; Function int test_04(int, int) (null) ;; enabled by -tree-original <<cleanup_point return <retval> = max (-128, min (127, a))>>;