From 1c0789e616b2445a83962f10ba97b8587573dc79 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 29 Nov 2008 03:46:57 -0600 Subject: [PATCH] Didn't generate ##branch after ##alien-invoke and ##alien-indirect --- basis/compiler/cfg/builder/builder.factor | 2 +- basis/compiler/tests/codegen.factor | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/basis/compiler/cfg/builder/builder.factor b/basis/compiler/cfg/builder/builder.factor index fdc0032a10..9ffe4a6aa0 100755 --- a/basis/compiler/cfg/builder/builder.factor +++ b/basis/compiler/cfg/builder/builder.factor @@ -260,7 +260,7 @@ M: #terminate emit-node drop stop-iterating ; : emit-alien-node ( node quot -- next ) [ params>> ] dip [ drop alien-stack-frame ] [ call ] 2bi - begin-basic-block iterate-next ; inline + ##branch begin-basic-block iterate-next ; inline M: #alien-invoke emit-node [ ##alien-invoke ] emit-alien-node ; diff --git a/basis/compiler/tests/codegen.factor b/basis/compiler/tests/codegen.factor index eb818972fc..7fbec43b60 100644 --- a/basis/compiler/tests/codegen.factor +++ b/basis/compiler/tests/codegen.factor @@ -261,3 +261,15 @@ TUPLE: id obj ; [ 3 ] [ 1 t fixnum-overflow-control-flow-test ] unit-test [ 2 ] [ 1 f fixnum-overflow-control-flow-test ] unit-test + +! LOL +: blah ( a -- b ) + { float } declare dup 0 = + [ drop 1 ] [ + dup 0 >= + [ 2 "double" "libm" "pow" { "double" "double" } alien-invoke ] + [ -0.5 "double" "libm" "pow" { "double" "double" } alien-invoke ] + if + ] if ; + +[ 4.0 ] [ 2.0 blah ] unit-test