Tobias Burnus [Wed, 19 Dec 2012 09:21:17 +0000 (10:21 +0100)]
re PR fortran/55636 (Fortran name mangling collides with user namespace)
2012-12-19 Tobias Burnus <burnus@net-b.de>
Jakub Jelinek <jakub@redhat.com>
Janus Weil <janus@gcc.gnu.org>
PR fortran/55636
PR fortran/55733
* gfortran.h (GFC_PREFIX): Define.
* trans-decl.c (gfc_create_string_length): For VAR_DECLs that
will be TREE_STATIC, use GFC_PREFIX to mangle the names. Handle
-fno-automatic
(gfc_trans_deferred_vars): Don't free variables SAVEd via
-fno-automatic.
2012-12-19 Tobias Burnus <burnus@net-b.de>
PR fortran/55733
* gfortran.dg/save_5.f90: New.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com> Co-Authored-By: Janus Weil <janus@gcc.gnu.org>
From-SVN: r194604
Jakub Jelinek [Tue, 18 Dec 2012 22:48:04 +0000 (23:48 +0100)]
re PR c/39464 (Attribute may_alias causes invalid warning)
PR c/39464
* c-typeck.c (convert_for_assignment): For -Wpointer-sign
warning require that both c_common_unsigned_type as well as
c_common_signed_type is the same for both mvl and mvr types.
Richard Biener [Tue, 18 Dec 2012 14:39:49 +0000 (14:39 +0000)]
re PR middle-end/54838 (ICE: in merge_latch_edges, at cfgloop.c:678 with -ftracer)
2012-12-18 Richard Biener <rguenther@suse.de>
PR middle-end/54838
* cfgloopmanip.c (fix_loop_structure): Re-discover latch
edges first and mark loops for removal if no latch edges remain.
Properly re-create LOOPS_HAVE_FALLTHRU_PREHEADERS.
* loop-init.c (loop_optimizer_finalize): Set
LOOPS_MAY_HAVE_MULTIPLE_LATCHES.
Richard Biener [Tue, 18 Dec 2012 13:12:34 +0000 (13:12 +0000)]
re PR middle-end/55555 (miscompilation at -O2 (number_of_iterations))
2012-12-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/55555
* tree-ssa-loop-niter.c (idx_infer_loop_bounds): Properly
analyze evolution of the index for the loop it is used in.
* tree-scalar-evolution.c (instantiate_scev_name): Take
inner loop we will be creating a chrec for. Generalize
fix for PR40281 and prune invalid SCEVs.
(instantiate_scev_poly): Likewise - pass down inner loop
we will be creating a chrec for.
(instantiate_scev_binary): Take and pass through inner loop.
(instantiate_array_ref): Likewise.
(instantiate_scev_convert): Likewise.
(instantiate_scev_not): Likewise.
(instantiate_scev_3): Likewise.
(instantiate_scev_2): Likewise.
(instantiate_scev_1): Likewise.
(instantiate_scev_r): Likewise.
(resolve_mixers): Adjust.
(instantiate_scev): Likewise.
* gcc.dg/torture/pr55555.c: New testcase.
* gcc.dg/vect/vect-iv-11.c: Adjust.
re PR middle-end/55709 (Infinite loop in pointer_set_insert compiling cp/pt.c)
PR middle-end/55709
Forward port from 4.7 branch:
2012-04-10 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR middle-end/52894
* varasm.c (process_pending_assemble_externals): Set
pending_assemble_externals_processed true.
(assemble_external): Call assemble_external_real if the pending
assemble externals have been processed.
Eric Botcazou [Sun, 16 Dec 2012 10:25:17 +0000 (10:25 +0000)]
re PR target/55673 (Reversed before/after handling in sparc_emit_membar_for_model)
PR target/55673
* config/sparc/sparc.c (sparc_emit_membar_for_model): Fix reversed
handling of before and after cases.
* config/sparc/sync.md (atomic_store): Fix pasto.
Alexandre Oliva [Sat, 15 Dec 2012 10:25:15 +0000 (10:25 +0000)]
re PR libmudflap/53952 (FAIL: libmudflap.c++/pass55-frag.cxx ( -O[123]) execution test)
PR libmudflap/53952
* expr.c (mem_ref_refers_to_non_mem_p): Factor out
implementation into...
(addr_expr_of_non_mem_decl_p_1): ... this new function.
(addr_expr_of_non_mem_decl_p): New.
* tree.h (addr_expr_of_non_mem_decl_p): Declare.
* tree-mudflap.c (mf_xform_derefs_1): Don't change MEM_REFs
and TARGET_MEM_REFs that have an ADDR_EXPR of a non-mem DECL
as base operand.
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