From b1e0084d2addeb4a74a5f3987f3e65c9f57c3e85 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Fri, 20 May 2016 11:54:38 -0400 Subject: [PATCH 21/35] FIXME; WIP on unittest for combine-stack-adj.c --- gcc/combine-stack-adj.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/gcc/combine-stack-adj.c b/gcc/combine-stack-adj.c index a74b65a..d580a9b 100644 --- a/gcc/combine-stack-adj.c +++ b/gcc/combine-stack-adj.c @@ -50,6 +50,7 @@ along with GCC; see the file COPYING3. If not see #include "cfgrtl.h" #include "tree-pass.h" #include "rtl-iter.h" +#include "selftest.h" /* This structure records two kinds of stack references between stack @@ -746,3 +747,48 @@ make_pass_stack_adjustments (gcc::context *ctxt) { return new pass_stack_adjustments (ctxt); } + +#if CHECKING_P + +namespace { + +class combine_stack_adj_test : public ::selftest::test +{ + protected: + void + assert_stack_ref_count (rtx_insn *insn, int expected_stack_refs) + { + csa_reflist *reflist = NULL; + record_stack_refs (insn, &reflist); + int actual_stack_refs = 0; + for (csa_reflist *iter = reflist; iter; iter = iter->next) + actual_stack_refs++; + EXPECT_EQ (actual_stack_refs, expected_stack_refs); + free_csa_reflist (reflist); + + /* FIXME: test itself passes, but causes failure + #6 0x0000000000c5ae4d in (anonymous namespace)::representation_test_expansion_to_rtl::run (this=0x22fa4b0) + at ../../src/gcc/function-tests.c:578 + due to: + + 4957 static void + 4958 prepare_function_start (void) + 4959 { + 4960 gcc_assert (!get_last_insn ()); + */ + init_emit (); + } +}; + +TEST_F (combine_stack_adj_test, foo) +{ + rtx set_pc = gen_rtx_SET (pc_rtx, + gen_rtx_LABEL_REF (VOIDmode, + gen_label_rtx ())); + rtx_insn *insn = emit_jump_insn (set_pc); + assert_stack_ref_count (insn, 0); +} + +} /* anon namespace. */ + +#endif /* #if CHECKING_P */ -- 1.8.5.3