diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-09-10 15:26:15 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-09-10 15:27:12 -0700 |
| commit | 7e9f98a8c95588b7c88e5d4b4db1890e086257ee (patch) | |
| tree | 330532748f2847c6b65077ebe55a0e8ff156f3ca /src/rustc | |
| parent | 5eccf849193f3de8da050eac960bc7f5df104c2f (diff) | |
| download | rust-7e9f98a8c95588b7c88e5d4b4db1890e086257ee.tar.gz rust-7e9f98a8c95588b7c88e5d4b4db1890e086257ee.zip | |
rustc: Make range literals use compare_scalar_types instead of trans_compare
Diffstat (limited to 'src/rustc')
| -rw-r--r-- | src/rustc/middle/trans/alt.rs | 10 | ||||
| -rw-r--r-- | src/rustc/middle/trans/base.rs | 28 |
2 files changed, 6 insertions, 32 deletions
diff --git a/src/rustc/middle/trans/alt.rs b/src/rustc/middle/trans/alt.rs index 835d8365124..050dcafbfa8 100644 --- a/src/rustc/middle/trans/alt.rs +++ b/src/rustc/middle/trans/alt.rs @@ -672,10 +672,12 @@ fn compile_submatch(bcx: block, m: match_, vals: ~[ValueRef], Result {val: vbegin, _}, Result {bcx, val: vend}) => { - let Result {bcx, val: llge} = trans_compare( - bcx, ast::ge, test_val, t, vbegin, t); - let Result {bcx, val: llle} = trans_compare( - bcx, ast::le, test_val, t, vend, t); + let Result {bcx, val: llge} = + compare_scalar_types(bcx, test_val, + vbegin, t, ast::ge); + let Result {bcx, val: llle} = + compare_scalar_types(bcx, test_val, vend, + t, ast::le); rslt(bcx, And(bcx, llge, llle)) } } diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs index 0b7269e6fb8..ab91fc8278d 100644 --- a/src/rustc/middle/trans/base.rs +++ b/src/rustc/middle/trans/base.rs @@ -610,34 +610,6 @@ fn iter_structural_ty(cx: block, av: ValueRef, t: ty::t, return cx; } -fn trans_compare(cx: block, op: ast::binop, lhs: ValueRef, - _lhs_t: ty::t, rhs: ValueRef, rhs_t: ty::t) -> Result { - let _icx = cx.insn_ctxt("trans_compare"); - if ty::type_is_scalar(rhs_t) { - let rs = compare_scalar_types(cx, lhs, rhs, rhs_t, op); - return rslt(rs.bcx, rs.val); - } - - // Determine the operation we need. - let llop = { - match op { - ast::eq | ast::ne => C_u8(abi::cmp_glue_op_eq), - ast::lt | ast::ge => C_u8(abi::cmp_glue_op_lt), - ast::le | ast::gt => C_u8(abi::cmp_glue_op_le), - _ => cx.tcx().sess.bug(~"trans_compare got non-comparison-op") - } - }; - - let cmpval = glue::call_cmp_glue(cx, lhs, rhs, rhs_t, llop); - - // Invert the result if necessary. - match op { - ast::eq | ast::lt | ast::le => rslt(cx, cmpval), - ast::ne | ast::ge | ast::gt => rslt(cx, Not(cx, cmpval)), - _ => cx.tcx().sess.bug(~"trans_compare got non-comparison-op") - } -} - fn cast_shift_expr_rhs(cx: block, op: ast::binop, lhs: ValueRef, rhs: ValueRef) -> ValueRef { cast_shift_rhs(op, lhs, rhs, |
