Richard Biener [Thu, 15 Jan 2015 08:41:08 +0000 (08:41 +0000)]
re PR tree-optimization/64365 (Predictive commoning after loop vectorization produces incorrect code.)
2015-01-15 Richard Biener <rguenther@suse.de>
PR middle-end/64365
* tree-data-ref.c (dr_analyze_indices): Make sure that accesses
for MEM_REF access functions with the same base can never partially
overlap.
* common.opt: New option -fstack-protector-explicit.
* cfgexpand.c (SPCT_FLAG_EXPLICIT): New enum.
(stack_protect_decl_phase): Handle stack_protect attribute for
explicit stack protection requests.
(expand_used_vars): Similarly.
* doc/cpp.texi (__SSP_EXPLICIT__): Document predefined macro.
* doc/extend.texi: Add documentation for "stack_protect" attribute.
* doc/invoke.texi: Add documentation for -fstack-protector-explicit.
* c-cppbuiltin.c (c_cpp_builtins): New cpp define __SSP_EXPLICIT__
for the new option fstack-protector_explicit.
* c-common.c (c_common_attribute_table): Add stack_protect attribute.
(handle_stack_protect_attribute): New function.
* gcc.dg/stackprotectexplicit1.c: New test.
* g++.dg/stackprotectexplicit2.c: New test.
Jerry DeLisle [Thu, 15 Jan 2015 03:57:29 +0000 (03:57 +0000)]
re PR fortran/61933 (Inquire on internal units)
2015-01-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/61933
* io/inquire.c (inquire_via_unit): Set existing to true if a
gfc_unit stucture was found for the given unit number.
* runtime/error.c (translate_error): Add case for
LIBERROR_INQUIRE_INTERNAL_UNIT.
Jerry DeLisle [Thu, 15 Jan 2015 03:51:16 +0000 (03:51 +0000)]
re PR fortran/61933 (Inquire on internal units)
2015-01-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/61933
* io.c (gfc_match_inquire): Generate error if unit number in
inquire statement is a constant -1. All other values allowed.
* trans-io.c (gfc_trans_inquire): Delete dummy iostat variable.
(create_dummy_iostat): Delete function no longer used.
Ian Lance Taylor [Thu, 15 Jan 2015 00:27:56 +0000 (00:27 +0000)]
libgo, compiler: Upgrade libgo to Go 1.4, except for runtime.
This upgrades all of libgo other than the runtime package to
the Go 1.4 release. In Go 1.4 much of the runtime was
rewritten into Go. Merging that code will take more time and
will not change the API, so I'm putting it off for now.
There are a few runtime changes anyhow, to accomodate other
packages that rely on minor modifications to the runtime
support.
The compiler changes slightly to add a one-bit flag to each
type descriptor kind that is stored directly in an interface,
which for gccgo is currently only pointer types. Another
one-bit flag (gcprog) is reserved because it is used by the gc
compiler, but gccgo does not currently use it.
There is another error check in the compiler since I ran
across it during testing.
Oleg Endo [Wed, 14 Jan 2015 23:46:34 +0000 (23:46 +0000)]
re PR target/53988 ([SH] tst Rm,Rn not used for QI/HImode)
gcc/
PR target/53988
* config/sh/sh-protos.h (sh_find_set_of_reg): Add option to ignore
reg-reg copies.
(sh_extending_set_of_reg): New struct.
(sh_find_extending_set_of_reg, sh_split_tst_subregs,
sh_remove_reg_dead_or_unused_notes): New Declarations.
* config/sh/sh.c (sh_remove_reg_dead_or_unused_notes,
sh_find_extending_set_of_reg, sh_split_tst_subregs,
sh_extending_set_of_reg::use_as_extended_reg): New functions.
* config/sh/sh.md (*tst<mode>_t_zero): Rename to *tst<mode>_t_subregs,
convert to insn_and_split and use new function sh_split_tst_subregs.
Andrew MacLeod [Wed, 14 Jan 2015 21:30:39 +0000 (21:30 +0000)]
builtins.c (expand_builtin_atomic_exchange): Remove error when memory model is CONSUME.
2015-01-14 Andrew MacLeod <amacleod@redhat.com>
* builtins.c (expand_builtin_atomic_exchange): Remove error when
memory model is CONSUME.
(expand_builtin_atomic_compare_exchange, expand_builtin_atomic_load,
expand_builtin_atomic_store): Change invalid memory model errors to
warnings.
(expand_builtin_atomic_clear): Change invalid model errors to warnings
and issue warning for CONSUME.
* testsuite/gcc.dg/atomic-invalid.c: Check for invalid memory model
warnings instead of errors.
M gcc/ChangeLog
M gcc/builtins.c
M gcc/testsuite/ChangeLog
M gcc/testsuite/gcc.dg/atomic-invalid.c
Andrew MacLeod [Wed, 14 Jan 2015 13:58:35 +0000 (13:58 +0000)]
re PR middle-end/59448 (Code generation doesn't respect C11 address-dependency)
2015-01-14 Andrew MacLeod <amacleod@redhat.com>
PR middle-end/59448
* builtins.c (get_memmodel): Promote consume to acquire always.
* testsuite/gcc.dg/atomic-invalid.c: Remove obselete test for illegal
consume in an atomic_exchange.
re PR target/64453 (Live high register not saved in function prolog on ARM with -Os)
2015-01-14 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
PR target/64453
* config/arm/arm.c (callee_saved_reg_p): Define.
(arm_compute_save_reg0_reg12_mask): Use callee_saved_reg_p to check if
register is callee saved instead of !call_used_regs[reg].
(thumb1_compute_save_reg_mask): Likewise.
Richard Biener [Wed, 14 Jan 2015 11:06:18 +0000 (11:06 +0000)]
re PR middle-end/64415 (ICE: verify_ssa failed / segmentation fault with LTO)
2015-01-14 Richard Biener <rguenther@suse.de>
PR lto/64415
* tree-inline.c (insert_debug_decl_map): Check destination
function MAY_HAVE_DEBUG_STMTS.
(insert_init_debug_bind): Likewise.
(insert_init_stmt): Remove redundant check.
(remap_gimple_stmt): Drop debug stmts if the destination
function has var-tracking assignments disabled.
* gcc.dg/lto/pr64415_0.c: New testcase.
* gcc.dg/lto/pr64415_1.c: Likewise.
Martin Liska [Wed, 14 Jan 2015 10:35:13 +0000 (11:35 +0100)]
IPA ICF: handle IMAGPART_EXPR and REALPART_EXPR.
* gcc.dg/ipa/pr64307.c: New test.
* ipa-icf-gimple.c (func_checker::compare_operand): Add support for
IMAGPART_EXPR and REALPART_EXPR and fix BIT_FIELD_REF comparison.
Matthew Fortune [Wed, 14 Jan 2015 08:35:52 +0000 (08:35 +0000)]
Fix Linux multilib configurations with default architectures
gcc/
* config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Only infer an ISA
level from an ARCH; do not inject the default.
(MIPS_DEFAULT_ISA_LEVEL_SPEC): New macro split out from
MIPS_ISA_LEVEL_SPEC.
(MIPS_ISA_NAN2008_SPEC): Update comment.
(BASE_DRIVER_SELF_SPECS): Likewise.
* config/mips/elfoabi.h (DRIVER_SELF_SPECS): Add
MIPS_DEFAULT_ISA_LEVEL_SPEC.
* config/mips/mti-elf.h (DRIVER_SELF_SPECS): Likewise.
* config/mips/mti-linux.h (DRIVER_SELF_SPECS): Likewise.
* config/mips/sde.h (DRIVER_SELF_SPECS): Likewise.
Richard Biener [Wed, 14 Jan 2015 08:32:18 +0000 (08:32 +0000)]
re PR tree-optimization/64493 (ICE at -O3 on x86_64-linux-gnu)
2015-01-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/64493
PR tree-optimization/64495
* tree-vect-loop.c (vect_finalize_reduction): For double-reductions
assign the proper vectorized PHI to the inner loop exit PHIs.
* gcc.dg/vect/pr64493.c: New testcase.
* gcc.dg/vect/pr64495.c: Likewise.
Jan Hubicka [Wed, 14 Jan 2015 03:47:17 +0000 (04:47 +0100)]
re PR ipa/64481 (r219076 breaks bootstrap (x86_64-unknown-linux-gnu))
PR ipa/64481
* ipa-inline-analysis.c (node_growth_cache): Remove.
(initialize_growth_caches): Do not initialize it.
(free_growth_caches): Do not free it.
(do_estimate_growth): Rename to ...
(estimate_growth): ... this one; drop growth cache code.
(growth_likely_positive): Always go the heuristics way.
* ipa-inline.c (can_inline_edge_p): Walk through aliases.
(reset_edge_caches): Do not reset node growth.
(heap_edge_removal_hook): Do not maintain cache.
(inline_small_functions): Likewise; strenghten sanity check.
(ipa_inline): Do not maintain caches.
* ipa-inline.h (node_growth_cache): Remove.
(do_estimate_growth): Remove to ...
(estimate_growth): this one; remove inline version.
(reset_node_growth_cache): Remove.
David Malcolm [Tue, 13 Jan 2015 22:14:46 +0000 (22:14 +0000)]
jit: New API entrypoint: gcc_jit_context_dump_reproducer_to_file
gcc/jit/ChangeLog:
* docs/cp/topics/contexts.rst (Debugging): Add
gccjit::context::dump_reproducer_to_file.
* docs/internals/index.rst (Design notes): New section,
discussing input validation and
gcc_jit_context_dump_reproducer_to_file.
* docs/topics/contexts.rst (Debugging): Add
gcc_jit_context_dump_reproducer_to_file.
* docs/_build/texinfo/libgccjit.texi: Regenerate.
* jit-common.h (gcc::jit::dump::get_context): New accessor.
* jit-recording.c: Include "hash-map.h".
Within namespace ::gcc::jit...
(dump::write): Flush each line.
(dump::make_location): Pass false for new param "created_by_user".
(class allocator): New class.
(allocator::~allocator): New function.
(allocator::xstrdup_printf): New function.
(allocator::xstrdup_printf_va): New function.
(class reproducer): New subclass of dump.
(reproducer::reproducer): New function.
(reproducer::write_params): New function.
(reproducer::write_args): New function.
(reproducer::make_identifier): New function.
(reproducer::make_tmp_identifier): New function.
(reproducer::get_identifier): New pair of functions.
(reproducer::get_identifier_as_rvalue): New function.
(reproducer::get_identifier_as_lvalue): New function.
(reproducer::get_identifier_as_type): New function.
(reproducer::xstrdup_printf): New function.
(recording::context::context): Initialize m_toplevel_ctxt.
(recording::context::new_location): Add param created_by_user.
(str_option_reproducer_strings): New table of strings.
(int_option_reproducer_strings): Likewise.
(bool_option_reproducer_strings): Likewise.
(get_type_enum_strings): Likewise.
(names_of_function_kinds): Likewise.
(global_kind_reproducer_strings): Likewise.
(unary_op_reproducer_strings): Likewise.
(binary_op_reproducer_strings): Likewise.
(comparison_reproducer_strings): Likewise.
Within namespace ::gcc::jit::recording::...
(context::dump_reproducer_to_file): New function.
(string::write_reproducer): Likewise.
(location::write_reproducer): Likewise.
(type::access_as_type): Likewise.
(memento_of_get_type::write_reproducer): Likewise.
(memento_of_get_pointer::write_reproducer): Likewise.
(memento_of_get_const::write_reproducer): Likewise.
(memento_of_get_volatile::write_reproducer): Likewise.
(array_type::write_reproducer): Likewise.
(function_type::write_reproducer): Likewise.
(function_type::write_deferred_reproducer): Likewise.
(field::write_reproducer): Likewise.
(struct_::access_as_type): Likewise.
(struct_::write_reproducer): Likewise.
(union_::write_reproducer): Likewise.
(fields::write_reproducer): Likewise.
(rvalue::access_as_rvalue): Likewise.
(lvalue::access_as_rvalue): Likewise.
(lvalue::access_as_lvalue): Likewise.
(param::access_as_rvalue): Likewise.
(param::access_as_lvalue): Likewise.
(param::write_reproducer): Likewise.
(function::write_reproducer): Likewise.
(block::write_reproducer): Likewise.
(global::write_reproducer): Likewise.
(memento_of_new_rvalue_from_const <int>::write_reproducer):
Likewise.
(memento_of_new_rvalue_from_const <long>::write_reproducer):
Likewise.
(memento_of_new_rvalue_from_const <double>::write_reproducer):
Likewise.
(memento_of_new_rvalue_from_const <void *>::write_reproducer):
Likewise.
(memento_of_new_string_literal::write_reproducer): Likewise.
(unary_op::write_reproducer): Likewise.
(binary_op::write_reproducer): Likewise.
(comparison::write_reproducer): Likewise.
(cast::write_reproducer): Likewise.
(call::write_reproducer): Likewise.
(call_through_ptr::write_reproducer): Likewise.
(array_access::write_reproducer): Likewise.
(access_field_of_lvalue::write_reproducer): Likewise.
(access_field_rvalue::write_reproducer): Likewise.
(dereference_field_rvalue::write_reproducer): Likewise.
(dereference_rvalue::write_reproducer): Likewise.
(get_address_of_lvalue::write_reproducer): Likewise.
(local::write_reproducer): Likewise.
(eval::write_reproducer): Likewise.
(assignment::write_reproducer): Likewise.
(assignment_op::write_reproducer): Likewise.
(comment::write_reproducer): Likewise.
(conditional::write_reproducer): Likewise.
(jump::write_reproducer): Likewise.
(return_::write_reproducer): Likewise.
* jit-recording.h (gcc::jit::reproducer): New forward declararion.
Within namespace ::gcc::jit::recording::...
(context::new_location): Add "created_by_user" param.
(context::dump_reproducer_to_file): New method.
(context::m_toplevel_ctxt): New field.
(memento::write_reproducer): New pure virtual function.
(memento::dyn_cast_location): New virtual function.
(string::write_reproducer):
(location::location): Add "created_by_user" param.
(location::dyn_cast_location): New function.
(location::created_by_user): New accessor.
(location::write_reproducer): New function.
(location::m_created_by_user): New field.
(type::access_as_type): New virtual function.
(location::write_reproducer): Likewise.
(type::access_as_type): Likewise.
(memento_of_get_type::write_reproducer): Likewise.
(memento_of_get_pointer::write_reproducer): Likewise.
(memento_of_get_const::write_reproducer): Likewise.
(memento_of_get_volatile::write_reproducer): Likewise.
(array_type::write_reproducer): Likewise.
(function_type::write_reproducer): Likewise.
(function_type::write_deferred_reproducer): Likewise.
(field::write_reproducer): Likewise.
(struct_::access_as_type): Likewise.
(struct_::write_reproducer): Likewise.
(union_::write_reproducer): Likewise.
(union_::m_fields): Remove stray unused field.
(fields::length): New accessor.
(fields::get_field): New accessor.
(fields::write_reproducer): New function.
(rvalue::access_as_rvalue): Likewise.
(lvalue::access_as_rvalue): Likewise.
(lvalue::access_as_lvalue): Likewise.
(param::access_as_rvalue): Likewise.
(param::access_as_lvalue): Likewise.
(param::write_reproducer): Likewise.
(function::write_reproducer): Likewise.
(block::write_reproducer): Likewise.
(global::write_reproducer): Likewise.
(memento_of_new_rvalue_from_const <HOST_TYPE>::write_reproducer):
Likewise.
(memento_of_new_string_literal::write_reproducer): Likewise.
(unary_op::write_reproducer): Likewise.
(binary_op::write_reproducer): Likewise.
(comparison::write_reproducer): Likewise.
(cast::write_reproducer): Likewise.
(call::write_reproducer): Likewise.
(call_through_ptr::write_reproducer): Likewise.
(array_access::write_reproducer): Likewise.
(access_field_of_lvalue::write_reproducer): Likewise.
(access_field_rvalue::write_reproducer): Likewise.
(dereference_field_rvalue::write_reproducer): Likewise.
(dereference_rvalue::write_reproducer): Likewise.
(get_address_of_lvalue::write_reproducer): Likewise.
(local::write_reproducer): Likewise.
(eval::write_reproducer): Likewise.
(assignment::write_reproducer): Likewise.
(assignment_op::write_reproducer): Likewise.
(comment::write_reproducer): Likewise.
(conditional::write_reproducer): Likewise.
(jump::write_reproducer): Likewise.
(return_::write_reproducer): Likewise.
* libgccjit++.h (gccjit::context::dump_reproducer_to_file): New.
* libgccjit.c (gcc_jit_context_new_location): Pass "true" as
param "created_by_user".
(gcc_jit_context_dump_reproducer_to_file): New API entrypoint.
* libgccjit.h (gcc_jit_context_dump_reproducer_to_file): New API
entrypoint.
* libgccjit.map (gcc_jit_context_dump_reproducer_to_file): New API
entrypoint.
gcc/testsuite/ChangeLog:
* jit.dg/harness.h (set_up_logging): Move string concatenation
into...
(concat_strings): New function.
(dump_reproducer): New function.
(test_jit): Call dump_reproducer.
* jit.dg/jit.exp (is_testcase_meant_to_generate_a_reproducer): New
function.
(jit-dg-test): Delete any generated reproducer from previous runs.
Verify that a generated reproducer was created, and verify that it
compiles.
* jit.dg/test-nested-contexts.c (main): Call
gcc_jit_context_dump_reproducer_to_file.
H.J. Lu [Tue, 13 Jan 2015 20:07:33 +0000 (20:07 +0000)]
Support PIE in gcc.dg/tree-ssa/ssa-store-ccp-3.c
target nonpic is always false for -fPIE since it defines both __PIC__
and __PIE__. This patch changes gcc.dg/tree-ssa/ssa-store-ccp-3.c to
make it to pass with -fPIE by excluding PIE when nonpic is true.
* gcc.dg/tree-ssa/ssa-store-ccp-3.c: Exclude pie when nonpic is
true.
Jakub Jelinek [Tue, 13 Jan 2015 19:12:47 +0000 (20:12 +0100)]
re PR rtl-optimization/64286 (Redundant extend removal ignores vector element type)
PR rtl-optimization/64286
* ree.c (combine_reaching_defs): Move part of comment earlier,
remove !SCALAR_INT_MODE_P check.
(add_removable_extension): Don't add vector mode
extensions if all uses of the source register aren't the same
vector extensions.
re PR tree-optimization/64436 (optimize-bswapdi-3.c fails on aarch64_be-none-elf)
2015-01-13 Thomas Preud'homme <thomas.preudhomme@arm.com>
gcc/
PR tree-optimization/64436
* tree-ssa-math-opts.c (find_bswap_or_nop_1): Move code performing the
merge of two symbolic numbers for a bitwise OR to ...
(perform_symbolic_merge): This. Also fix computation of the range and
end of the symbolic number corresponding to the result of a bitwise OR.
Chung-Ju Wu [Tue, 13 Jan 2015 05:59:03 +0000 (05:59 +0000)]
[NDS32] Implement TARGET_ENCODE_SECTION_INFO to store specific flag in symbol_ref rtx.
gcc/
* config/nds32/nds32.h (NDS32_SYMBOL_FLAG_RODATA): Define our own
target-specific symbol_ref flag.
(NDS32_SYMBOL_REF_RODATA_P): Define it to check if the symbol_ref
resides in rodata section.
* config/nds32/nds32.c (TARGET_ENCODE_SECTION_INFO): Define.
(nds32_encode_section_info): New function.
Chung-Ju Wu [Tue, 13 Jan 2015 05:37:07 +0000 (05:37 +0000)]
[NDS32] Consider TARGET_CMODEL_LARGE for function call instructions.
gcc/
* config/nds32/nds32.md (call): Use pseudo instruction bal which
clobbers TA_REGNUM if large code model is specified.
(call_register): Likewise.
(call_immediate): Likewise.
(call_value): Likewise.
(call_value_register): Likewise.
(call_value_immediate): Likewise.
Chung-Ju Wu [Tue, 13 Jan 2015 05:32:08 +0000 (05:32 +0000)]
[NDS32] Provide TARGET_CMODEL_[SMALL|MEDIUM|LARGE] to check which code model is specified.
gcc/
* config/nds32/nds32.h (TARGET_CMODEL_SMALL): New macro.
(TARGET_CMODEL_MEDIUM): New macro.
(TARGET_CMODEL_LARGE): New macro.
* config/nds32/nds32.c (nds32_asm_file_start): Display corresponding
code model setting in assembly code.
gcc/
* common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
Remove MASK_GP_DIRECT flag.
* config/nds32/nds32.h (MULTILIB_DEFAULTS): Have -mcmodel=medium as
one of the multilib default options.
* config/nds32/nds32.opt (mgp-direct): Remove.
* config/nds32/t-mlibs (MULTILIB_OPTIONS): Use -mcmodel instead of
-mgp-direct. We also remove unnecessary -mlittle-endian/-mbig-endian.
David Malcolm [Mon, 12 Jan 2015 22:25:37 +0000 (22:25 +0000)]
libgccjit: detect various kinds of errors relating to params and locals
gcc/jit/ChangeLog:
* jit-recording.c (class gcc::jit::rvalue_usage_validator): New.
(gcc::jit::rvalue_usage_validator::rvalue_usage_validator): New
ctor.
(gcc::jit::rvalue_usage_validator::visit): New function.
(gcc::jit::recording::rvalue::verify_valid_within_stmt): New
function.
(gcc::jit::recording::rvalue::set_scope): New function.
(gcc::jit::recording::function::function): Call set_scope on each
param, issuing errors for any params that already have a function.
(gcc::jit::recording::block::add_eval): Return the new statement;
update the comment given that some error-checking now happens after
this returns.
(gcc::jit::recording::block::add_assignment): Likewise.
(gcc::jit::recording::block::add_assignment_op): Likewise.
(gcc::jit::recording::block::add_comment): Likewise.
(gcc::jit::recording::block::end_with_conditional): Likewise.
(gcc::jit::recording::block::end_with_jump): Likewise.
(gcc::jit::recording::block::end_with_return): Likewise.
(gcc::jit::recording::block::validate): Add a comment.
(gcc::jit::recording::unary_op::visit_children): New function.
(gcc::jit::recording::binary_op::visit_children): New function.
(gcc::jit::recording::comparison::visit_children): New function.
(gcc::jit::recording::cast::visit_children): New function.
(gcc::jit::recording::call::visit_children): New function.
(gcc::jit::recording::call_through_ptr::visit_children): New function.
(gcc::jit::recording::array_access::visit_children): New function.
(gcc::jit::recording::access_field_of_lvalue::visit_children): New
function.
(gcc::jit::recording::access_field_rvalue::visit_children): New
function.
(gcc::jit::recording::dereference_field_rvalue::visit_children):
New function.
(gcc::jit::recording::dereference_rvalue::visit_children): New
function.
(gcc::jit::recording::get_address_of_lvalue::visit_children): New
function.
* jit-recording.h: Within namespace gcc::jit::recording...
(class rvalue_visitor): New.
(rvalue::rvalue): Initialize m_scope.
(rvalue::get_loc): New accessor.
(rvalue::verify_valid_within_stmt): New function.
(rvalue::visit_children): New pure virtual function.
(rvalue::set_scope): New function.
(rvalue::get_scope): New function.
(rvalue::dyn_cast_param): New function.
(rvalue::m_scope): New field.
(param::visit_children): New empty function.
(param::dyn_cast_param): New function.
(function::get_loc): New function.
(block::add_eval): Return the new statement.
(block::add_assignment): Likewise.
(block::add_assignment_op): Likewise.
(block::add_comment): Likewise.
(block::end_with_conditional): Likewise.
(block::end_with_jump): Likewise.
(block::end_with_return): Likewise.
(global::visit_children): New function.
(memento_of_new_rvalue_from_const<HOST_TYPE>::visit_children):
New function.
(memento_of_new_string_literal::visit_children): New function.
(unary_op::visit_children): New function.
(binary_op::visit_children): New function.
(comparison::visit_children): New function.
(cast::visit_children): New function.
(call::visit_children): New function.
(call_through_ptr::visit_children): New function.
(array_access::visit_children): New function.
(access_field_of_lvalue::visit_children): New function.
(access_field_rvalue::visit_children): New function.
(dereference_field_rvalue::visit_children): New function.
(dereference_rvalue::visit_children): New function.
(get_address_of_lvalue::visit_children): New function.
(local::local): Call set_scope.
(local::visit_children): New function.
(statement::get_block): Make public.
* libgccjit.c (RETURN_VAL_IF_FAIL_PRINTF5): New macro.
(RETURN_NULL_IF_FAIL_PRINTF5): New macro.
(gcc_jit_context_new_function): Verify that each param has
not yet been used for creating another function.
(gcc_jit_block_add_eval): After creating the stmt, verify
that the rvalue expression tree is valid to use within it.
(gcc_jit_block_add_assignment): Likewise for the lvalue and
rvalue expression trees.
(gcc_jit_block_add_assignment_op): Likewise.
(gcc_jit_block_end_with_conditional): Likewise for the boolval
expression tree.
(gcc_jit_block_end_with_return): Likewise for the rvalue
expression tree.
(gcc_jit_block_end_with_void_return): Remove return of "void",
now that block::end_with_return is now non-void.
gcc/testsuite/ChangeLog:
* jit.dg/test-error-local-used-from-other-function.c: New test
case.
* jit.dg/test-error-param-reuse.c: New test case.
* jit.dg/test-error-param-sharing.c: New test case.
* jit.dg/test-error-param-used-from-other-function.c: New test
case.
* jit.dg/test-error-param-used-without-a-function.c: New test
case.
gcc/
* doc/invoke.texi ([-Wsuggest-attribute=]): Don't use parentheses
after a funtion name just to indicate it is a function.
([-fsanitize-undefined-trap-on-error]): Likewise.
([-fdbg-cnt=]): Likewise.
([-mmemcpy]): Likewise.
([-mflush-func]): Likewise.
([-msynci]): Likewise.
Jakub Jelinek [Mon, 12 Jan 2015 20:44:32 +0000 (21:44 +0100)]
re PR tree-optimization/64454 (optimize (x%5)%5)
PR tree-optimization/64454
* tree-vrp.c (simplify_div_or_mod_using_ranges): Optimize
op0 % op1 into op0 if op0 is in range [-op1 + 1, op1 - 1]
for signed or [0, op1 - 1] for unsigned modulo.
(simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges
even if op1 does not satisfy integer_pow2p.