From 2478b053de82f311edc7005cc66391cc33bbb40b Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Sat, 24 Nov 2012 14:53:45 +0900 Subject: [PATCH] Add a test for writes to global vars in a loop. --- tools/qfcc/test/Makefile.am | 9 ++++++++- tools/qfcc/test/infloop.r | 23 +++++++++++++++++++++++ tools/qfcc/test/test-bi.c | 7 +++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 tools/qfcc/test/infloop.r diff --git a/tools/qfcc/test/Makefile.am b/tools/qfcc/test/Makefile.am index 4c8e5b113..736ed8942 100644 --- a/tools/qfcc/test/Makefile.am +++ b/tools/qfcc/test/Makefile.am @@ -18,7 +18,7 @@ QFCC_TEST_LIBS=@QFCC_TEST_LIBS@ QFCC_TEST_DEPS=@QFCC_TEST_DEPS@ QFCC_TEST_INCS=@QFCC_TEST_INCS@ -test_progs_dat=modulo.dat structptr.dat while.dat +test_progs_dat=infloop.dat modulo.dat structptr.dat while.dat TESTS=$(test_progs_dat:.dat=.run) @@ -28,6 +28,13 @@ test_harness_SOURCES= test-bi.c test-harness.c test_harness_LDADD= $(QFCC_TEST_LIBS) test_harness_DEPENDENCIES= $(QFCC_TEST_DEPS) +infloop_dat_SOURCES=infloop.r +infloop_obj=$(infloop_dat_SOURCES:.r=.qfo) +infloop.dat: $(infloop_obj) $(QFCC_DEP) + $(QFCC) $(QCFLAGS) -o $@ $(infloop_obj) +infloop.run: Makefile build-run + $(srcdir)/build-run $@ + modulo_dat_SOURCES=modulo.r modulo_obj=$(modulo_dat_SOURCES:.r=.qfo) modulo.dat: $(modulo_obj) $(QFCC_DEP) diff --git a/tools/qfcc/test/infloop.r b/tools/qfcc/test/infloop.r new file mode 100644 index 000000000..dfab456c2 --- /dev/null +++ b/tools/qfcc/test/infloop.r @@ -0,0 +1,23 @@ +void exit (int code) = #0; + +int foo; + +int calc_foo (void) +{ + return 1; +} + +void check_foo (void) +{ + if (foo) + exit (0); + exit (1); +} + +int main () +{ + while (1) { + foo = calc_foo (); + check_foo (); + } +} diff --git a/tools/qfcc/test/test-bi.c b/tools/qfcc/test/test-bi.c index 953b4bdba..5bc730ef2 100644 --- a/tools/qfcc/test/test-bi.c +++ b/tools/qfcc/test/test-bi.c @@ -71,10 +71,17 @@ bi_strerror (progs_t *pr) RETURN_STRING (pr, strerror (err)); } +static void +bi_exit (progs_t *pr) +{ + exit (P_INT (pr, 0)); +} + static builtin_t builtins[] = { {"printf", bi_printf, -1}, {"errno", bi_errno, -1}, {"strerror", bi_strerror, -1}, + {"exit", bi_exit, -1}, {0} };