diff options
Diffstat (limited to 'src/omegatools.cc')
-rw-r--r-- | src/omegatools.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/omegatools.cc b/src/omegatools.cc index 6d48a3c..c9f3a9a 100644 --- a/src/omegatools.cc +++ b/src/omegatools.cc @@ -241,12 +241,16 @@ void exp2formula(IR_Code *ir, std::vector<CG_outputRepr *> v = ir->QueryExpOperand(repr); CHILL_DEBUG_PRINT("IR_OP_MINUS v has %d parts\n", (int) v.size()); - exp2formula(ir, r, f_and, freevars, v[0], e1, side, IR_COND_EQ, true, - uninterpreted_symbols, uninterpreted_symbols_stringrepr); - if (v.size() > 1) { + exp2formula(ir, r, f_and, freevars, v[0], e1, side, IR_COND_EQ, true, + uninterpreted_symbols, uninterpreted_symbols_stringrepr); exp2formula(ir, r, f_and, freevars, v[1], e2, side, IR_COND_EQ, true, uninterpreted_symbols, uninterpreted_symbols_stringrepr); + } else { + exp2formula(ir, r, f_and, freevars, new CG_chillRepr(new chillAST_IntegerLiteral(0)), e1, side, IR_COND_EQ, true, + uninterpreted_symbols, uninterpreted_symbols_stringrepr); + exp2formula(ir, r, f_and, freevars, v[0], e2, side, IR_COND_EQ, true, + uninterpreted_symbols, uninterpreted_symbols_stringrepr); } |