r225255 - in /branches/gcc-5-branch/gcc: Change...

dmalcolm@gcc.gnu.org dmalcolm@gcc.gnu.org
Wed Jul 1 14:40:00 GMT 2015


Author: dmalcolm
Date: Wed Jul  1 14:40:02 2015
New Revision: 225255

URL: https://gcc.gnu.org/viewcvs?rev=225255&root=gcc&view=rev
Log:
jit: add switch statements

Backport of r225207 (a24ef8d231d1015c5a4ee68050ed78f5582342fe)
from trunk

gcc/ChangeLog:
	Backport from mainline r225207
	2015-06-30  David Malcolm  <dmalcolm@redhat.com>

	* typed-splay-tree.h: New file.

gcc/jit/ChangeLog:
	Backport from mainline r225207
	2015-06-30  David Malcolm  <dmalcolm@redhat.com>

	* docs/cp/topics/functions.rst (Blocks): Add switch statements to
	list of ways to terminate a block.
	(gccjit::block::end_with_switch): Add function description.
	(gccjit::case_): Add class.
	(gccjit::context::new_case): Add function description.
	* docs/cp/topics/objects.rst: Add "case_" to class hierarchy.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_3): New.
	* docs/topics/functions.rst (Blocks): Add switch statements to
	list of ways to terminate a block.
	(gcc_jit_block_end_with_switch): Add function description.
	(gcc_jit_case): Add type.
	(gcc_jit_context_new_case): Add function description.
	(gcc_jit_case_as_object): Add function description.
	* docs/topics/objects.rst: Add gcc_jit_case to class hierarchy.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.
	* jit-common.h (gcc::jit::recording::case_): Add forward decl.
	(gcc::jit::playback::case_): Add forward decl.
	* jit-playback.c (add_case): New function.
	(gcc::jit::playback::block::add_switch): New function.
	* jit-playback.h (gcc::jit::playback::case_): New struct.
	(gcc::jit::playback::block::get_function): New method.
	(gcc::jit::playback::block::add_switch): New method.
	* jit-recording.c: Within namespace gcc::jit...
	(recording::context::new_case): New method.
	(recording::function::validate): Update for change to
	get_successor_blocks.
	(recording::block::end_with_switch): New method.
	(recording::block::get_successor_blocks): Update to support an
	arbitrary number of successor blocks.
	(recording::block::dump_edges_to_dot): Likewise.
	(memento_of_new_rvalue_from_const <int>::get_wide_int): New.
	(memento_of_new_rvalue_from_const <long>::get_wide_int): New.
	(memento_of_new_rvalue_from_const <double>::get_wide_int): New.
	(memento_of_new_rvalue_from_const <void *>::get_wide_int): New.
	(recording::statement::get_successor_blocks): Update to support an
	arbitrary number of successor blocks.
	(recording::conditional::get_successor_blocks): Likewise.
	(recording::jump::get_successor_blocks): Likewise.
	(recording::return_::get_successor_blocks): Likewise.
	(recording::case_::write_reproducer): New.
	(recording::case_::make_debug_string): New.
	(recording::switch_::switch_): New.
	(recording::switch_::replay_into): New.
	(recording::switch_::get_successor_blocks): New.
	(recording::switch_::make_debug_string): New.
	(recording::switch_::write_reproducer): New.
	* jit-recording.h: Within namespace gcc::jit::recording...
	(context::new_case): New.
	(rvalue::is_constant): New.
	(rvalue::get_wide_int): New.
	(block::end_with_switch): New.
	(block::get_successor_blocks): Update to support an arbitrary
	number of successor blocks.
	(memento_of_new_rvalue_from_const::is_constant): New.
	(memento_of_new_rvalue_from_const::get_wide_int): New.
	(statement::get_successor_blocks): Update to support an arbitrary
	number of successor blocks.
	(conditional::get_successor_blocks): Likewise.
	(jump::get_successor_blocks): Likewise.
	(return_::get_successor_blocks): Likewise.
	(case_): New subclass of memento.
	(switch_): New subclass of statement.
	* libgccjit++.h (gccjit::case_): New subclass of gccjit::object.
	(gccjit::context::new_case): New method.
	(gccjit::block::end_with_switch): New method.
	(gccjit::case_::case): New ctors.
	(gccjit::case_::get_inner_case): New method.
	* libgccjit.c: Include "typed-splay-tree.h"
	(struct gcc_jit_case): New.
	(gcc_jit_context_new_case): New function.
	(gcc_jit_case_as_object): New function.
	(valid_dest_for_switch): New function.
	(valid_case_for_switch): New function.
	(class api_call_validator): New class.
	(class case_range_validator): New class.
	(case_range_validator::case_range_validator): New.
	(case_range_validator::validate): New.
	(case_range_validator::case_compare): New.
	(case_range_validator::get_wide_int): new.
	(gcc_jit_block_end_with_switch): New.
	* libgccjit.h: Add gcc_jit_case to class hierarchy comment.
	(gcc_jit_case): New typedef.
	(gcc_jit_context_new_case): New function.
	(gcc_jit_case_as_object): New function.
	(gcc_jit_block_end_with_switch): New function.
	(LIBGCCJIT_HAVE_SWITCH_STATEMENTS): New.
	* libgccjit.map: Add gcc_jit_block_end_with_switch,
	gcc_jit_case_as_object and gcc_jit_context_new_case.

gcc/testsuite/ChangeLog:
	Backport from mainline r225207
	2015-06-30  David Malcolm  <dmalcolm@redhat.com>

	* jit.dg/all-non-failing-tests.h: Add test-switch.c.
	* jit.dg/test-error-gcc_jit_block_end_with_switch-NULL-case.c: New
	testcase.
	* jit.dg/test-error-gcc_jit_block_end_with_switch-mismatching-case-type.c:
	New testcase.
	* jit.dg/test-error-gcc_jit_block_end_with_switch-overlapping-ranges.c:
	New testcase.
	* jit.dg/test-error-gcc_jit_context_new_case-non-const-label.c:
	New testcase.
	* jit.dg/test-error-gcc_jit_context_new_case-non-integer-type.c:
	New testcase.
	* jit.dg/test-error-gcc_jit_context_new_case-reversed-endpoints.c:
	New testcase.
	* jit.dg/test-switch.c: New testcase.
	* jit.dg/test-switch.cc: New testcase.

Added:
    branches/gcc-5-branch/gcc/testsuite/jit.dg/test-error-gcc_jit_block_end_with_switch-NULL-case.c
    branches/gcc-5-branch/gcc/testsuite/jit.dg/test-error-gcc_jit_block_end_with_switch-mismatching-case-type.c
    branches/gcc-5-branch/gcc/testsuite/jit.dg/test-error-gcc_jit_block_end_with_switch-overlapping-ranges.c
    branches/gcc-5-branch/gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_case-non-const-label.c
    branches/gcc-5-branch/gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_case-non-integer-type.c
    branches/gcc-5-branch/gcc/testsuite/jit.dg/test-error-gcc_jit_context_new_case-reversed-endpoints.c
    branches/gcc-5-branch/gcc/testsuite/jit.dg/test-switch.c
    branches/gcc-5-branch/gcc/testsuite/jit.dg/test-switch.cc
    branches/gcc-5-branch/gcc/typed-splay-tree.h
Modified:
    branches/gcc-5-branch/gcc/ChangeLog
    branches/gcc-5-branch/gcc/jit/ChangeLog
    branches/gcc-5-branch/gcc/jit/docs/_build/texinfo/libgccjit.texi
    branches/gcc-5-branch/gcc/jit/docs/cp/topics/functions.rst
    branches/gcc-5-branch/gcc/jit/docs/cp/topics/objects.rst
    branches/gcc-5-branch/gcc/jit/docs/topics/compatibility.rst
    branches/gcc-5-branch/gcc/jit/docs/topics/functions.rst
    branches/gcc-5-branch/gcc/jit/docs/topics/objects.rst
    branches/gcc-5-branch/gcc/jit/jit-common.h
    branches/gcc-5-branch/gcc/jit/jit-playback.c
    branches/gcc-5-branch/gcc/jit/jit-playback.h
    branches/gcc-5-branch/gcc/jit/jit-recording.c
    branches/gcc-5-branch/gcc/jit/jit-recording.h
    branches/gcc-5-branch/gcc/jit/libgccjit++.h
    branches/gcc-5-branch/gcc/jit/libgccjit.c
    branches/gcc-5-branch/gcc/jit/libgccjit.h
    branches/gcc-5-branch/gcc/jit/libgccjit.map
    branches/gcc-5-branch/gcc/testsuite/ChangeLog
    branches/gcc-5-branch/gcc/testsuite/jit.dg/all-non-failing-tests.h



More information about the Gcc-cvs mailing list