Richard Biener [Fri, 14 Dec 2012 13:35:03 +0000 (13:35 +0000)]
re PR tree-optimization/55684 (ICE in remove_redundant_iv_tests, at tree-ssa-loop-ivcanon.c:559)
2012-12-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/55684
* tree-ssa-loop-ivcanon.c (remove_redundant_iv_tests): Handle
gracefully the case where we cannot compute the number of
iterations at an exit.
Richard Biener [Thu, 13 Dec 2012 11:13:13 +0000 (11:13 +0000)]
re PR lto/55660 (ICE instead of some warning during lto build with supplied different options (-funsigned-char vs none))
2012-12-13 Richard Biener <rguenther@suse.de>
PR lto/55660
* tree-streamer.c (record_common_node): Check that we are not
recursively pre-loading nodes we want to skip. Handle
char_type_node appearing as part of va_list_type_node.
* gcc.dg/lto/pr55660_0.c: New testcase.
* gcc.dg/lto/pr55660_1.c: Likewise.
* bitmap.c (struct bitmap_descriptor): Remove forward declaration.
(struct bitmap_head_def): Remove desc pointer. Add descriptor_id
field. Reorder fields for pointer alignment.
* bitmap.c: Include vec.h.
(struct bitmap_descriptor): Rename to bitmap_descriptor_d.
(bitmap_descriptor): New typedef, pointer to bitmap_descriptor_d.
Update all struct bitmap_descriptor references.
(next_bitmap_desc_id): New running index for bitmap desciptors.
(bitmap_descriptors): Vec of all bitmap descriptors by descriptor id.
(hash_descriptor, eq_descriptor): Update for struct bitmap_descriptor
change.
(bitmap_descriptor): Rename function to get_bitmap_descriptor.
Stuff newly allocated bitmap descriptor into bitmap_descriptors.
Set the bitmap descriptor id.
(bitmap_register): Lookup bitmap desciptor and store its ID in
the passed bitmap.
(register_overhead): Likewise.
(bitmap_find_bit): Lookup descriptor by id in bitmap_descriptors.
(print_statistics): Update for struct bitmap_descriptor change.
Jakub Jelinek [Wed, 12 Dec 2012 23:19:32 +0000 (00:19 +0100)]
re PR debug/55665 (Missing DW_TAG_lexical_block PC range)
PR debug/55665
* tree-inline.c (remap_decls): Change nonlocalized_list
to pointer to pointer to vector from pointer to vector.
(remap_block): Pass address of BLOCK_NONLOCALIZED_VARS.
Jakub Jelinek [Wed, 12 Dec 2012 23:04:22 +0000 (00:04 +0100)]
gcc-dg.exp (${tool}_load): Handle non-existing set_target_env_var the same as if it is empty list.
* lib/gcc-dg.exp (${tool}_load): Handle non-existing
set_target_env_var the same as if it is empty list.
(dg-set-target-env-var): Fix up error message.
(set-target-env-var): Record both preexisting env var values
as well as info that env wasn't set.
(restore-target-env-var): Iterate on reversed list, if second
sublist element is 1, setenv the env var to the third sublist
element, otherwise unsetenv it.
(gcc-dg-runtest): Don't initialize set_target_env_var.
(dg-test): Unset set_target_env_var if it was set.
* g++.dg/asan/deep-tail-call-1.C: Whitespace fixes. Don't rely
on argc being one.
* g++.dg/asan/interception-malloc-test-1.C: Only run on linux.
Whitespace fixes. Avoid unnecessary * sizeof(char).
* g++.dg/asan/deep-thread-stack-1.C: Add -lasan -lpthread to
dg-options. Whitespace fixes.
* g++.dg/asan/deep-stack-uaf-1.C: Skip for -flto. Whitespace fixes.
* g++.dg/asan/interception-test-1.C: Whitespace fixes.
* g++.dg/asan/interception-failure-test-1.C: Whitespace fixes.
Avoid unnecessary * sizeof(char). Remove // CHECK: comment.
* g++.dg/asan/default-options-1.C: Whitespace fixes.
* g++.dg/asan/symbolize-callback-1.C: Whitespace fixes. Make
first __asan_symbolize argument unnamed. Avoid unnecessary
* sizeof(char).
* g++.dg/asan/large-func-test-1.C: Whitespace fixes. Don't rely
on argc being one. Allow both _Znwj and _Znwm as operator new.
Ignore everything in the backtrace above operator new. Fix up
dg-output regexps.
* c-c++-common/asan/null-deref-1.c: Add -fno-omit-frame-pointer
and for x86 -mno-omit-leaf-frame-pointer. Fix up dg-output regexps.
* c-c++-common/asan/clone-test-1.c: Whitespace fixes. Return non-zero
on failures. Avoid pointless PASS dg-output check. Remove bogus
dg-shouldfail.
* c-c++-common/asan/sanity-check-pure-c-1.c: Fix up dg-output regexps.
Avoid unnecessary * sizeof(char).
* c-c++-common/asan/heap-overflow-1.c: Fix up dg-output regexps.
Don't rely on argc being one.
* c-c++-common/asan/sleep-before-dying-1.c: Whitespace fixes.
Avoid unnecessary * sizeof(char).
* c-c++-common/asan/rlimit-mmap-test-1.c: Whitespace fixes.
* c-c++-common/asan/stack-overflow-1.c: Fix up dg-output regexps.
* c-c++-common/asan/global-overflow-1.c: Add -fno-builtin-memset.
Fix up dg-output regexps.
* c-c++-common/asan/strncpy-overflow-1.c: Fix up dg-output regexps.
* c-c++-common/asan/memcmp-1.c: Don't rely on argc being one.
* c-c++-common/asan/use-after-free-1.c: Fix up dg-output regexps.
* c-c++-common/asan/swapcontext-test-1.c: Don't rely on argc being
one.
* c-c++-common/asan/force-inline-opt0-1.c: Remove dg-skip-if.
* c-c++-common/asan/strip-path-prefix-1.c: Whitespace fixes.
Avoid unnecessary * sizeof(char).
2012-12-12 Wei Mi <wmi@google.com>
* lib/target-supports.exp (check_effective_target_dlopen,
check_effective_target_clone, check_effective_target_setrlimit,
check_effective_target_swapcontext): New procedures.
* lib/gcc-dg.exp (${tool}_load): Handle dg-set-target-env-var.
(dg-set-target-env-var, set-target-env-var,
restore-target-env-var): New procedures.
(gcc-dg-runtest): Set set_target_env_var.
* g++.dg/asan/symbolize-callback-1.C: New test.
* g++.dg/asan/shared-lib-test-1-so.cc: New file.
* g++.dg/asan/deep-tail-call-1.C: New test.
* g++.dg/asan/default-options-1.C: New test.
* g++.dg/asan/interception-test-1.C: New test.
* g++.dg/asan/dlclose-test-1-so.cc: New file.
* g++.dg/asan/deep-thread-stack-1.C: New test.
* g++.dg/asan/interception-malloc-test-1.C: New test.
* g++.dg/asan/deep-stack-uaf-1.C: New test.
* g++.dg/asan/large-func-test-1.C: New test.
* g++.dg/asan/interception-failure-test-1.C: New test.
* c-c++-common/asan/strip-path-prefix-1.c: New test.
* c-c++-common/asan/force-inline-opt0-1.c: New test.
* c-c++-common/asan/swapcontext-test-1.c: New test.
* c-c++-common/asan/null-deref-1.c: New test.
* c-c++-common/asan/global-overflow-1.c: New test.
* c-c++-common/asan/strncpy-overflow-1.c: New test.
* c-c++-common/asan/rlimit-mmap-test-1.c: New test.
* c-c++-common/asan/stack-overflow-1.c: New test.
* c-c++-common/asan/use-after-free-1.c: New test.
* c-c++-common/asan/sanity-check-pure-c-1.c: New test.
* c-c++-common/asan/clone-test-1.c: New test.
* c-c++-common/asan/heap-overflow-1.c: New test.
* c-c++-common/asan/sleep-before-dying-1.c: New test.
Steven Bosscher [Wed, 12 Dec 2012 13:21:41 +0000 (13:21 +0000)]
graph.c: Include sbitmap.h and cfgloop.h.
* graph.c: Include sbitmap.h and cfgloop.h.
(draw_cfg_nodes_no_loops): New function to dump basic blocks in
topological order if the function does not have a loop tree.
Handle unreachable blocks also.
(draw_cfg_nodes_for_loop): New function to dump basic blocks in
one loop tree node as a named cluster of nodes.
(draw_cfg_nodes): New function to draw all CFG nodes.
(draw_cfg_edges): New function to draw all CFG edges.
(print_graph_cfg): Simplify using the new functions.
* Makefile.in (graph.o): Fix dependencies.
Zdenek Dvorak [Wed, 12 Dec 2012 13:07:19 +0000 (14:07 +0100)]
re PR middle-end/55481 (-O2 generates a wrong-code infinite loop in C++Benchmark's simple_types_constant_folding int8 xor test)
2012-12-12 Zdenek Dvorak <ook@ucw.cz>
PR tree-optimization/55481
* tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Fall
back to general rewriting if we cannot leave an original biv
definition alone.
Jakub Jelinek [Wed, 12 Dec 2012 09:56:22 +0000 (10:56 +0100)]
re PR target/55659 ([SH] Build failure with ICE in dwarf2out_var_location, at dwarf2out.c:20748)
PR target/55659
Revert
2012-12-11 Jakub Jelinek <jakub@redhat.com>
PR middle-end/43631
* var-tracking.c (emit_note_insn_var_location): If insn is followed
by BARRIER, put note after the BARRIER.
(next_non_note_insn_var_location): Skip over BARRIERs.
(emit_notes_in_bb): If call is followed by BARRIER, put note after
the BARRIER.
2012-12-06 Jakub Jelinek <jakub@redhat.com>
PR middle-end/43631
* var-tracking.c (emit_note_insn_var_location, emit_notes_in_bb):
Clear BLOCK_FOR_INSN on notes emitted in between basic blocks,
don't adjust BB_END when inserting note after BB_END of some bb.
Steven Bosscher [Wed, 12 Dec 2012 09:43:33 +0000 (09:43 +0000)]
re PR middle-end/52640 (performance bottleneck: gcc/tree.c;value_member)
PR middle-end/52640
* varasm.c (pending_assemble_externals_set): New pointer set.
(process_pending_assemble_externals): Destroy the pointer set.
(assemble_external): See if decl is in pending_assemble_externals_set,
and add it to pending_assemble_externals if necessary.
(init_varasm_once): Allocate pending_assemble_externals_set.
* gcc.c-torture/compile/limits-externdecl.c: New test.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r194441
Jakub Jelinek [Tue, 11 Dec 2012 19:01:45 +0000 (20:01 +0100)]
re PR c++/55643 ([C++11] incorrect "warning: variable ‘myVar’ set but not used" with an "enum class"-typed variable is casted to double for the use)
PR c++/55643
* expr.c (mark_exp_read): Handle FLOAT_EXPR similarly to NOP_EXPR.
Jakub Jelinek [Tue, 11 Dec 2012 18:01:09 +0000 (19:01 +0100)]
re PR rtl-optimization/55193 (ICE in in simplify_const_unary_operation, at simplify-rtx.c:1659)
PR rtl-optimization/55193
* lra-constraints.c (loc_equivalence_callback): New function.
(lra_constraints): Call simplify_replace_fn_rtx instead of
loc_equivalence_change_p on DEBUG_INSNs.
Jakub Jelinek [Tue, 11 Dec 2012 10:41:44 +0000 (11:41 +0100)]
re PR middle-end/43631 (var-tracking inserts notes with non-NULL BLOCK_FOR_INSN in between basic blocks)
PR middle-end/43631
PR bootstrap/55615
* var-tracking.c (emit_note_insn_var_location): If insn is followed
by BARRIER, put note after the BARRIER.
(next_non_note_insn_var_location): Skip over BARRIERs.
(emit_notes_in_bb): If call is followed by BARRIER, put note after
the BARRIER.
Jakub Jelinek [Tue, 11 Dec 2012 10:26:56 +0000 (11:26 +0100)]
sanitizer.def (BUILT_IN_ASAN_HANDLE_NO_RETURN): New builtin.
* sanitizer.def (BUILT_IN_ASAN_HANDLE_NO_RETURN): New builtin.
* asan.c (instrument_builtin_call): Change is_gimple_builtin_call
gcc_assert to gcc_checking_assert.
(maybe_instrument_call): Imit __builtin___asan_handle_no_return ()
before noreturn calls other than __builtin_trap () and
__builtin_unreachable ().
Richard Biener [Tue, 11 Dec 2012 10:19:21 +0000 (10:19 +0000)]
re PR other/54324 (GCC install document does not list minimum required g++ version)
2012-12-11 Richard Biener <rguenther@suse.de>
PR other/54324
* doc/install.texi (Tools/packages necessary for building GCC):
State ISO C++98 host compiler requirement. Increment minimum
GCC version required for building all languages for a cross-compiler
to 3.4 or later.
H.J. Lu [Mon, 10 Dec 2012 14:43:54 +0000 (14:43 +0000)]
Record the global variables if WPA isn't enabled
PR lto/55466
* lto-symtab.c (lto_symtab_merge_decls_1): Don't record the
prevailing variable.
* lto.c (lto_register_var_decl_in_symtab): Don't record static
variables.
(lto_main): Record the global variables if WPA isn't enabled.
Richard Biener [Mon, 10 Dec 2012 14:00:25 +0000 (14:00 +0000)]
re PR tree-optimization/55107 (GCC in an infinite loop in PRE)
2012-12-10 Richard Biener <rguenther@suse.de>
PR tree-optimization/55107
* tree-ssa-pre.c (struct pre_stats): Remove constified field.
(bitmap_set_replace_value): Add gcc_unreachable.
(do_regular_insertion): Re-write all_same handling. Insert
an assignment instead of a PHI in this case.
(eliminate_bb): Record availability also for SSA names defined
by a constant.
(do_pre): Do not record constified events.
(execute_fre): Likewise.
* gcc.dg/torture/pr55107.c: New testcase.
* gcc.dg/tree-ssa/ssa-pre-5.c: Adjust.
Jakub Jelinek [Mon, 10 Dec 2012 12:14:36 +0000 (13:14 +0100)]
asan.c (asan_init_shadow_ptr_types): Move earlier in the file.
* asan.c (asan_init_shadow_ptr_types): Move earlier in the file.
Call initialize_sanitizer_builtins at the end.
(asan_pp_string): Use TREE_TYPE (shadow_ptr_types[0])
as character type instead of char_type_node.
(asan_emit_stack_protection): Call asan_init_shadow_ptr_types
if shadow_ptr_types isn't initialized.
(asan_protect_global): Return true for STRING_CSTs except those
created by asan_pp_string.
(count_string_csts, add_string_csts): New functions.
(struct asan_add_string_csts_data): New type.
(asan_finish_file): Clear flag_asan at the beginning, restore at the
end. Traverse constant_pool_htab () to look for protected
STRING_CSTs. Don't call initialize_sanitizer_builtins,
instead call asan_init_shadow_ptr_types if shadow_ptr_types isn't
initialized yet.
(asan_instrument): Don't call initialize_sanitizer_builtins.
* varasm.c (output_constant_def_contents): If STRING_CST should be
asan protected, align it sufficiently and emit padding after it.
(categorize_decl_for_section): If flag_asan, don't put STRING_CSTs
that should be asan protected into mergeable sections. For
-fmerge-all-constants, ignore it for -fmudflap or if decl is
asan protected.