Commit Graph

139311 Commits

Author SHA1 Message Date
Alan Lawrence
4f9a2b4e88 tree-pass.h (make_pass_ch_vect): New.
gcc/:

	* tree-pass.h (make_pass_ch_vect): New.
	* passes.def: Add pass_ch_vect just before pass_if_conversion.

	* tree-ssa-loop-ch.c (ch_base, pass_ch_vect, pass_data_ch_vect,
	pass_ch::process_loop_p, pass_ch_vect::process_loop_p,
	make_pass_ch_vect): New.
	(pass_ch): Extend ch_base.

	(pass_ch::execute): Move all but loop_optimizer_init/finalize to...
	(ch_base::copy_headers): ...here.

gcc/testsuite/:

	* gcc.dg/vect/vect-strided-a-u16-i4.c (main1): Narrow scope of x,y,z,w.
	* gcc.dg/vect/vect-ifcvt-11.c: New testcase.

From-SVN: r225311
2015-07-02 11:47:31 +00:00
Richard Biener
5fa79de857 builtins.c (get_pointer_alignment_1): Handle POINTER_PLUS_EXPR.
2015-07-02  Richard Biener  <rguenther@suse.de>

	* builtins.c (get_pointer_alignment_1): Handle POINTER_PLUS_EXPR.
	* fold-const.c (get_pointer_modulus_and_residue): Remove.
	(fold_binary_loc): Implement (T)ptr & CST in terms of
	get_pointer_alignment_1.
	* tree-vect-loop-manip.c (vect_gen_niters_for_prolog_loop):
	Make sure to build the alignment test on a SSA name without
	final alignment info valid only after the prologue.

From-SVN: r225310
2015-07-02 11:33:16 +00:00
Hans-Peter Nilsson
cc2af70593 cris.md ("epilogue"): Remove condition.
* config/cris/cris.md ("epilogue"): Remove condition.
	("prologue"): Ditto.

From-SVN: r225308
2015-07-02 11:25:04 +00:00
Richard Biener
a02bf6abb8 re PR tree-optimization/66719 (gcc.dg/vect/bb-slp-32.c FAILs)
2015-07-02  Richard Biener  <rguenther@suse.de>

	PR testsuite/66719
	* gcc.dg/vect/bb-slp-32.c: Re-add XFAIL for targets not supporting
	unaligned loads.

From-SVN: r225303
2015-07-02 08:38:42 +00:00
Uros Bizjak
dcbc9df997 configure.ac: Add AC_USE_SYSTEM_EXTENSIONS.
* configure.ac: Add AC_USE_SYSTEM_EXTENSIONS.
	* configure: Regenerate.
	* config.h.in: Ditto.

From-SVN: r225302
2015-07-02 10:30:07 +02:00
Uros Bizjak
f70360e7b3 pr66702-1.C: Require vect_simd_clones effective target.
* testsuite/libgomp.c++/pr66702-1.C: Require
	vect_simd_clones effective target.
	* testsuite/libgomp.c++/pr66702-2.C: Ditto.

From-SVN: r225301
2015-07-02 10:17:20 +02:00
Richard Biener
a003896684 tree-ssa-dom.c (build_and_record_new_cond): Add optional parameter to record a condition that is false.
2015-07-02  Richard Biener  <rguenther@suse.de>

	* tree-ssa-dom.c (build_and_record_new_cond): Add optional
	parameter to record a condition that is false.
	(record_conditions): When recording an extra NE_EXPR that is
	true also record a EQ_EXPR that is false.

	* gcc.dg/tree-ssa/ssa-dom-cse-4.c: New testcase.

From-SVN: r225299
2015-07-02 07:37:35 +00:00
Uros Bizjak
53ac92c3e0 guard.cc (__test_and_acquire): Use __p after __atomic_load to avoid unused variable warning.
* libsupc++/guard.cc (__test_and_acquire): Use __p after __atomic_load
	to avoid unused variable warning.
	(__set_and_release): Use __p after __atomic_store to avoid unused
	variable warning.

From-SVN: r225298
2015-07-02 07:58:12 +02:00
H.J. Lu
8725e9c4ab Add prototype for exit
* gcc.target/i386/mpx/pr66568.c (exit): New prototype.

From-SVN: r225296
2015-07-01 22:03:34 -07:00
Bin Cheng
6f92998579 tree-ssa-loop-ivopts.c (struct ivopts_data): New field iv_obstack.
* tree-ssa-loop-ivopts.c (struct ivopts_data): New field iv_obstack.
	(tree_ssa_iv_optimize_init): Initialize iv_obstack.
	(alloc_iv): New parameter.  Allocate struct iv using obstack_alloc.
	(set_iv, find_interesting_uses_address, add_candidate_1): New
	argument to alloc_iv.
	(find_interesting_uses_op, find_interesting_uses_cond): Don't
	duplicate struct iv.
	(free_loop_data): Don't free struct iv explicitly.
	(tree_ssa_iv_optimize_finalize): Free iv_obstack.

From-SVN: r225293
2015-07-02 04:32:05 +00:00
GCC Administrator
305ebd10fd Daily bump.
From-SVN: r225286
2015-07-02 00:16:11 +00:00
DJ Delorie
b8a4094af1 tpf.h (LIBSTDCXX): Change to CPP1.
* config/s390/tpf.h (LIBSTDCXX): Change to CPP1.
(LIB_SPEC): Add.
(SUPPORTS_DISCRIMINATOR): Define.

From-SVN: r225278
2015-07-01 16:18:59 -04:00
Jason Merrill
36a85135b7 c-common.h (D_CXX11): Rename from D_CXX0X.
gcc/c-family/
	* c-common.h (D_CXX11): Rename from D_CXX0X.
	(RID_FIRST_CXX11, RID_LAST_CXX11): Rename from *_CXX0X.
	* c-common.c: Adjust.
gcc/cp/
	* lex.c (init_reswords): s/CXX0X/CXX11/.
	* parser.c (cp_lexer_get_preprocessor_token): Likewise.

From-SVN: r225273
2015-07-01 15:25:50 -04:00
Jason Merrill
e7fa68d555 c-opts.c (c_common_post_options): Default to C++14.
gcc/c-family/
	* c-opts.c (c_common_post_options): Default to C++14.
gcc/testsuite/
	* lib/target-supports.exp (cxx_default): Set to C++14.

From-SVN: r225272
2015-07-01 14:27:12 -04:00
Jason Merrill
a03c9bf1b1 c-opts.c (c_common_post_options): Highest ABI level is now 10.
gcc/c-family/
	* c-opts.c (c_common_post_options): Highest ABI level is now 10.
gcc/cp/
	* mangle.c (write_CV_qualifiers_for_type, write_nested_name):
	Attribute mangling is now -fabi-version=10.

From-SVN: r225271
2015-07-01 13:59:25 -04:00
Jason Merrill
d68f848b12 re PR c++/65945 (C++ alignment of nullptr_t is 1 and might cause unaligned stores to the frame)
PR c++/65945
	* decl.c (cxx_init_decl_processing): Set TYPE_ALIGN of nullptr_t.
	* class.c (layout_nonempty_base_or_field): Warn if that affects
	the offset of a field.

From-SVN: r225270
2015-07-01 13:59:19 -04:00
John David Anglin
f9a12f7b8f linux-atomic.c (__kernel_cmpxchg): Reorder arguments to better match light-weight syscall argument order.
* config/pa/linux-atomic.c (__kernel_cmpxchg): Reorder arguments to
	better match light-weight syscall argument order.
	(__kernel_cmpxchg2): Likewise.
	Adjust callers.

From-SVN: r225267
2015-07-01 17:42:20 +00:00
Tom de Vries
5747290f51 Use scan-rtl-dump in i386/vararg-loc.c
2015-07-01  Tom de Vries  <tom@codesourcery.com>

	PR testsuite/66723
	* gcc.target/i386/vararg-loc.c: Use scan-rtl-dump instead of
	scan-assembler.

From-SVN: r225266
2015-07-01 17:33:01 +00:00
Richard Sandiford
23bae97dbd re PR middle-end/66685 (conftest.c:16:1: internal compiler error: in as_a, at is-a.h:192)
gcc/
	PR bootstrap/66685
	* rtl.c (classify_insn): Only return JUMP_INSN for parallel returns if
	there are no CALLs in the same pattern.

From-SVN: r225263
2015-07-01 16:48:30 +00:00
Thomas Koenig
c219aeb7de arith.c (gfc_arith_divide): With -Winteger-division...
2015-07-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* arith.c (gfc_arith_divide):  With -Winteger-division,
	warn about contant integer division if there is a non-zero
	remainder.
	* invoke.texi:  Document -Winteger-division.
	* lang.opt:  Add -Winteger-division.

2015-07-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* gfortran.dg/warn_conversion_8.f90:  New test.

From-SVN: r225262
2015-07-01 16:43:53 +00:00
Bernd Edlinger
1e67793833 re PR rtl-optimization/61047 (wrong code at -O1 on x86_64-linux)
gcc/ChangeLog:
2015-07-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR rtl-optimization/61047
        * rtlanal.c (get_initial_register_offset): New function.
        (rtx_addr_can_trap_p_1): Check offsets of stack references.

testsuite/ChangeLog:
2015-07-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR rtl-optimization/61047
        * gcc.c-torture/execute/20150611-1.c: New testcase.

From-SVN: r225260
2015-07-01 16:10:30 +00:00
Richard Biener
2ee05f1e9b fold-const.c (fold_comparison): Move X - Y CMP 0 -> X CMP Y...
2015-07-01  Richard Biener  <rguenther@suse.de>

	* fold-const.c (fold_comparison): Move X - Y CMP 0 -> X CMP Y,
	X * C1 CMP 0 -> X CMP 0, X CMP X, ~X CMP ~Y -> Y CMP X and
	~X CMP C -> X CMP' ~C to ...
	* match.pd: ... patterns here.

From-SVN: r225249
2015-07-01 13:18:49 +00:00
David Malcolm
e09abfa408 PR jit/66700: set TREE_ADDRESSABLE when building an ADDR_EXPR
gcc/jit/ChangeLog:
	PR jit/66700
	* jit-playback.c (jit_mark_addressable): New function.
	(gcc::jit::playback::lvalue::get_address): Call
	jit_mark_addressable on the underlying tree.

gcc/testsuite/ChangeLog:
	PR jit/66700
	* jit.dg/all-non-failing-tests.h: Add
	test-pr66700-observing-write-through-ptr.c.
	* jit.dg/test-pr66700-observing-write-through-ptr.c: New testcase.

From-SVN: r225248
2015-07-01 12:50:50 +00:00
David Malcolm
e807aeaae3 jit: document union types
gcc/jit/ChangeLog:
	* docs/topics/types.rst (gcc_jit_context_new_union_type): Add
	documentation.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

gcc/testsuite/ChangeLog:
	* jit.dg/test-accessing-union.c: Add comments for use by
	gcc/jit/docs/topics/types.rst.

From-SVN: r225246
2015-07-01 12:41:18 +00:00
David Malcolm
c575221ada jit: clarify (lack of) lifetime requirements on input const char *
gcc/jit/ChangeLog:
	* docs/topics/contexts.rst (gcc_jit_context_set_bool_option):
	Clarify lack of lifetime requirements on (const char *) parameter.
	* docs/topics/expressions.rst
	(gcc_jit_context_new_string_literal): Likewise.
	(gcc_jit_context_new_global): Likewise.
	* docs/topics/functions.rst (gcc_jit_context_new_param): Likewise.
	(gcc_jit_context_new_function): Likewise.
	(gcc_jit_function_new_block): Likewise.
	(gcc_jit_block_add_comment): Likewise.
	* docs/topics/locations.rst (gcc_jit_context_new_location):
	Likewise.
	* docs/topics/types.rst (gcc_jit_context_new_field): Likewise.
	(gcc_jit_context_new_struct_type): Likewise.
	* docs/_build/texinfo/libgccjit.texi: Regenerate.

From-SVN: r225245
2015-07-01 12:34:24 +00:00
Jonathan Wakely
7946683835 alloc_traits.h (__alloctr_rebind): Remove.
* include/bits/alloc_traits.h (__alloctr_rebind): Remove.
	(__allocator_traits_base): New base class.
	(__alloc_rebind): Reimplement in terms of detection idiom.
	(allocator_traits): Derive from __allocator_traits_base. Reimplement
	nested types in terms of detection idiom. Simplify SFINAE constraints
	on overloaded static member functions.
	* include/bits/hashtable.h (_Hashtable): Use __alloc_rebind instead
	of __alloctr_rebind.
	* testsuite/20_util/scoped_allocator/propagation.cc: Define rebind.
	* testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
	dg-error line number.

From-SVN: r225244
2015-07-01 13:24:09 +01:00
Jonathan Wakely
4f44c5556f ptr_traits.h (__ptrtr_elt_type, [...]): Remove
* include/bits/ptr_traits.h (__ptrtr_elt_type, __ptrtr_diff_type,
	__ptrtr_rebind, __ptrtr_not_void): Remove
	(__get_first_arg, __replace_first_arg, __make_not_void): Define new
	transformations.
	(__detected_or_): New detection trait.
	(pointer_traits): Use new traits.
	* testsuite/20_util/pointer_traits/pointer_to.cc: Add rebind member.
	* testsuite/20_util/pointer_traits/requirements/
	explicit_instantiation.cc: Use valid arguments to pointer_traits.

From-SVN: r225243
2015-07-01 13:24:03 +01:00
Jonathan Wakely
6af6bef4ac Implement N4502, the C++ Detection Idiom.
* doc/xml/manual/status_cxx2017.xml: Update status table.
	* include/experimental/type_traits (void_t, is_detected,
	is_detected_v, detected_t, detected_or, detected_or_t,
	is_detected_exact, is_detected_exact_v, is_detected_convertible,
	is_detected_convertible_v): Define.
	* include/std/type_traits (__detector, __detected_or, __detected_or_t,
	__detected_or_t_): Define.
	* testsuite/experimental/type_traits/detection.cc: New.

From-SVN: r225242
2015-07-01 13:23:54 +01:00
Matthew Wahab
9735e6ea8e armv8-sync-comp-swap.c: Replace 'do-require-effective-target' with 'dg-require-effective-target'.
2015-07-01  Matthew Wahab  <matthew.wahab@arm.com>

	* gcc.target/arm/armv8-sync-comp-swap.c: Replace
	'do-require-effective-target' with 'dg-require-effective-target'.
	* gcc.target/arm/armv8-sync-op-full.c: Likewise.
	* gcc.target/arm/armv8-sync-op-release.c: Likewise.
	* gcc.target/arm/armv8-sync-op-acquire.c: Likewise.  Also, replace
        'stlex' with 'strex' as the expected output.

From-SVN: r225241
2015-07-01 12:16:01 +00:00
Nick Clifton
85bd3c0150 msp430.md (zero_extendhipsi2): Use MOVX.A to store a 16-bit value into a 20-bit memory slot.
* config/msp430/msp430.md (zero_extendhipsi2): Use MOVX.A to store
	a 16-bit value into a 20-bit memory slot.

From-SVN: r225240
2015-07-01 11:35:48 +00:00
Paolo Carlini
a31dc4e516 re PR c++/60365 (multiple noreturn attribute specifiers in a single declaration doesn't result in a diagnostic)
/cp
2015-07-01  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60365
	* parser.c (cp_parser_check_std_attribute): New.
	(cp_parser_std_attribute_list): Call it.

/testsuite
2015-07-01  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60365
	* g++.dg/cpp0x/gen-attrs-60.C: New.
	* g++.dg/cpp1y/attr-deprecated-2.C: Likewise.

From-SVN: r225234
2015-07-01 09:08:17 +00:00
Jiong Wang
d0baaae351 [AArch64] Document several AArch64-specific test directives
2015-07-01  Jiong Wang  <jiong.wang@arm.com>

	* doc/sourcebuild.texi (AArch64-specific attributes): Document
	"aarch64_tiny", "aarch64_small", "aarch64_large",
	"aarch64_little_endian", "aarch64_big_endian".

From-SVN: r225233
2015-07-01 09:01:47 +00:00
Jiong Wang
8997ef1850 [AArch64] Restrict pic-small.c by new test directive
2015-07-01  Jiong Wang  <jiong.wang@arm.com>

      gcc/
	* doc/sourcebuild.texi (AArch64-specific attributes): New subsection.
	Document "aarch64_small_fpic".

      gcc/testsuite/
	* lib/target-supports.exp (check_effective_target_aarch64_small_fpic): New function.
	* gcc.target/aarch64/pic-small.c: Restrict this test under
	check_effective_target_aarch64_small_fpic.

From-SVN: r225232
2015-07-01 08:51:49 +00:00
Jiong Wang
34ecdb0f20 [AArch64] Fall back to -fPIC if no support of -fpic in binutils
2015-07-01  Jiong Wang  <jiong.wang@arm.com>

	* configure.ac: Add check for aarch64 assembler -fpic relocation
	modifier support.
	* configure: Regenerate.
	* config.in: Regenerate.
	* config/aarch64/aarch64.c (initialize_aarch64_code_model): Fall back
	to -fPIC if not support of -fpic relocation modifier in assembler.

From-SVN: r225231
2015-07-01 08:45:08 +00:00
Richard Sandiford
1d628b1536 re PR middle-end/66685 (conftest.c:16:1: internal compiler error: in as_a, at is-a.h:192)
gcc/
	PR bootstrap/66685
	* rtl.c (classify_insn): Handle returns in PARALLELs.

From-SVN: r225230
2015-07-01 08:41:33 +00:00
Eric Botcazou
eb71ab9f1f re PR middle-end/66633 (ICE on valid "verify_gimple failed" with OpenMP)
PR middle-end/66633
	* tree-nested.c (convert_nonlocal_omp_clauses): Initialize need_chain
	to true if the function is nested and if not optimizing.
	(convert_local_omp_clauses): Initialize need_frame to true if the
	function contains nested functions and if not optimizing.

From-SVN: r225227
2015-07-01 08:21:40 +00:00
Richard Biener
97e7739106 fold-const.c (fold_binary_loc): Move ~X ^ X -> -1 and (X & Y) ^ Y -> ~X & Y transforms to ...
2015-07-01  Richard Biener  <rguenther@suse.de>

	* fold-const.c (fold_binary_loc): Move ~X ^ X -> -1 and
	(X & Y) ^ Y -> ~X & Y transforms to ...
	* match.pd: ... here.

From-SVN: r225225
2015-07-01 07:42:10 +00:00
Eric Botcazou
a64be36b47 Fix latest entry
From-SVN: r225224
2015-07-01 07:39:55 +00:00
Richard Biener
88a2d13f6c genmatch.c (expr::gen_transform): Shortcut re-simplifying of converts to avoid uninteresting noise from the...
2015-07-01  Richard Biener <rguenther@suse.de>

	* genmatch.c (expr::gen_transform): Shortcut re-simplifying
	of converts to avoid uninteresting noise from the conversion
	simplifying patterns.

From-SVN: r225223
2015-07-01 07:36:25 +00:00
Uros Bizjak
e8cfe4c5a5 * gcc.target/i386/pr66691.c: Update PR number.
From-SVN: r225222
2015-07-01 08:43:18 +02:00
Sandra Loosemore
1e32ce0bc5 c6x.c (try_rename_operands): Do not depend on gcc_assert evaluating its argument for side-effect.
2015-06-30  Sandra Loosemore <sandra@codesourcery.com>

	gcc/
	* config/c6x/c6x.c (try_rename_operands): Do not depend on
	gcc_assert evaluating its argument for side-effect.

From-SVN: r225221
2015-06-30 22:15:32 -04:00
Patrick Palka
f58d5e069d Fix PR c++/66686 (dependent template template substitution)
gcc/cp/ChangeLog:

	PR c++/66686
	* pt.c (coerce_template_template_parm) [PARM_DECL]: Don't
	return 0 if tsubst returns a dependent type.

gcc/testsuite/ChangeLog:

	PR c++/66686
	* g++.dg/template/pr66686.C: New test.

From-SVN: r225220
2015-07-01 01:07:35 +00:00
Kaz Kojima
5be6d9e45f re PR target/64833 ([SH]: Error: pcrel too far when compiling imagemagick and graphicsmagick on Debian sh4)
PR target/64833
* [SH] Set length of casesi_worker_1 insn to 8 when flag_pic is set.

From-SVN: r225219
2015-07-01 01:02:48 +00:00
GCC Administrator
9127ce984d Daily bump.
From-SVN: r225218
2015-07-01 00:16:11 +00:00
Eric Botcazou
cec34ee582 lto-streamer-out.c (class DFS): Adjust hash_scc method.
* lto-streamer-out.c (class DFS): Adjust hash_scc method.
	(DFS::DFS): Pass this_ref_p and ref_p to hash_scc.
	(hash_scc): Add this_ref_p and ref_p parameters and pass them
	to the inner DFS walk.

From-SVN: r225212
2015-06-30 21:05:02 +00:00
Richard Sandiford
ec4a505ff5 target-insns.def (jump): New targetm instruction pattern.
gcc/
	* target-insns.def (jump): New targetm instruction pattern.
	* bb-reorder.c (get_uncond_jump_length): Use targetm.gen_jump
	instead of gen_jump.
	(fix_up_crossing_landing_pad): Likewise.
	(add_labels_and_missing_jumps): Likewise.
	(fix_crossing_conditional_branches): Likewise.
	* cfgrtl.c (try_redirect_by_replacing_jump): Likewise.
	(force_nonfallthru_and_redirect): Likewise.
	* cse.c (cse_insn): Likewise.
	* expmed.c (expand_divmod): Likewise.
	* expr.c (store_expr_with_bounds, expand_expr_real_2): Likewise.
	* haifa-sched.c (init_before_recovery): Likewise.
	(sched_create_recovery_edges): Likewise.
	* ifcvt.c (find_cond_trap): Likewise.
	* optabs.c (expand_doubleword_shift, expand_doubleword_clz): Likewise.
	(expand_float, expand_fix): Likewise.
	* stmt.c (emit_jump): Likewise.

From-SVN: r225211
2015-06-30 20:57:21 +00:00
Richard Sandiford
20fceb31cd gcc/
* defaults.h (HAVE_load_multiple, gen_load_multiple)
	(HAVE_store_multiple, gen_store_multiple): Delete.
	* target-insns.def (load_multiple, store_multiple): New targetm
	instruction patterns.
	* expr.c (move_block_to_reg, move_block_from_reg): Use them instead
	of HAVE_*/gen_* interface.

From-SVN: r225210
2015-06-30 20:56:43 +00:00
Richard Sandiford
ccf5bbdd40 gcc/
* defaults.h (HAVE_mem_thread_fence, gen_mem_thread_fence)
	(HAVE_memory_barrier, gen_memory_barrier, HAVE_mem_signal_fence)
	(gen_mem_signal_fence): Delete.
	* target-insns.def (mem_signal_fence, mem_thread_fence)
	(memory_barrier): New targetm instruction patterns.
	* optabs.c (expand_mem_thread_fence): Use them instead of HAVE_*/gen_*
	interface.
	(expand_mem_signal_fence): Likewise.

From-SVN: r225209
2015-06-30 20:56:14 +00:00
Richard Sandiford
e86a994681 defaults.h (HAVE_epilogue, [...]): Delete.
gcc/
	* defaults.h (HAVE_epilogue, gen_epilogue): Delete.
	* target-insns.def (epilogue, prologue, sibcall_prologue): New
	targetm instruction patterns.
	* alias.c (init_alias_analysis): Use them instead of HAVE_*/gen_*
	interface.
	* calls.c (expand_call): Likewise.
	* cfgrtl.c (cfg_layout_finalize): Likewise.
	* df-scan.c (df_get_entry_block_def_set): Likewise.
	(df_get_exit_block_use_set): Likewise.
	* dwarf2cfi.c (pass_dwarf2_frame::gate): Likewise.
	* final.c (final_start_function): Likewise.
	* function.c (thread_prologue_and_epilogue_insns): Likewise.
	(reposition_prologue_and_epilogue_notes): Likewise.
	* reorg.c (find_end_label): Likewise.
	* toplev.c (process_options): Likewise.

From-SVN: r225208
2015-06-30 20:55:13 +00:00
David Malcolm
ec5d008814 jit: add switch statements
gcc/ChangeLog:
	* typed-splay-tree.h: New file.

gcc/jit/ChangeLog:
	* 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:
	* 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.

From-SVN: r225207
2015-06-30 20:39:50 +00:00