I am getting the following error when compiling a simple snippet system_error(cannot_catch_throw(error(existence_error(procedure,(>)/2),findall/3)))
To reproduce, create a file (test.pl) with this code: :-initialization(findall_bug). findall_bug:- write(findall_bug),nl, findall(Att, (member(Att, [6, 0]), Att > 0), XParmAs), write(XParmAs),nl, findall(Att, findall_bug1([6,0], Att), ParmAs), write(ParmAs),nl, write(done),nl, !. findall_bug1(Parms, Att):- member( Att, Parms), Att > 0. I usually compile the generated assembly file with this two steps: gplc -S test.pl -o test.s mingw-as - o test.obj --32 test.s and link with MSVC linker. However, I can reproduce this using only gplc: gplc --no-top-level --min-pl-bips -o test.exe test.pl Output of execution is: findall_bug system_error(cannot_catch_throw(error(existence_error(procedure,(>)/2),findall/3))) system_error(cannot_catch_throw(error(existence_error(procedure,(>)/2),findall/3))) [] [6] done If you compile without --min-pl-bips, the output is right It seems that the compiler treats differently the arithmetic comparison inside findall, and does not include some library code when using --min-pl-bips (and also linking directly with MSVC) Using GNU Prolog 1.4.4 Regards, Gustavo
_______________________________________________ Bug-prolog mailing list [email protected] https://lists.gnu.org/mailman/listinfo/bug-prolog
