The front-end ensures that both sides have been casted to the same type before being given to the lowering pass.
gcc/d/ChangeLog: * expr.cc (binary_op): Remove dead code. --- gcc/d/expr.cc | 8 -------- 1 file changed, 8 deletions(-) diff --git a/gcc/d/expr.cc b/gcc/d/expr.cc index 73e0abeaa43..e293cf2a4cd 100644 --- a/gcc/d/expr.cc +++ b/gcc/d/expr.cc @@ -101,8 +101,6 @@ binary_op (tree_code code, tree type, tree arg0, tree arg1) tree t1 = TREE_TYPE (arg1); tree ret = NULL_TREE; - bool unsignedp = TYPE_UNSIGNED (t0) || TYPE_UNSIGNED (t1); - /* Deal with float mod expressions immediately. */ if (code == FLOAT_MOD_EXPR) return build_float_modulus (type, arg0, arg1); @@ -130,12 +128,6 @@ binary_op (tree_code code, tree type, tree arg0, tree arg1) else ret = fold_build2 (POINTER_DIFF_EXPR, ptrtype, arg0, arg1); } - else if (INTEGRAL_TYPE_P (type) && (TYPE_UNSIGNED (type) != unsignedp)) - { - tree inttype = (unsignedp) - ? d_unsigned_type (type) : d_signed_type (type); - ret = fold_build2 (code, inttype, arg0, arg1); - } else { /* If the operation needs excess precision. */ -- 2.30.2