Commit Graph

122505 Commits

Author SHA1 Message Date
Eric Botcazou
5789594736 * postreload.c (reload_combine): Fix code detecting returns.
From-SVN: r197037
2013-03-25 11:25:28 +00:00
Eric Botcazou
1e1b18c1c7 function.c (emit_use_return_register_into_block): On cc0 targets, do not emit the sequence between cc0 setter and user.
* function.c (emit_use_return_register_into_block): On cc0 targets,
	do not emit the sequence between cc0 setter and user.

From-SVN: r197036
2013-03-25 11:24:12 +00:00
Kai Tietz
9a776a830e * g++.dg/torture/20121105-1.C: Adjust for LLP64 targets.
From-SVN: r197034
2013-03-25 11:55:37 +01:00
Kai Tietz
9216baf178 predicates.md (local_symbolic_operand): Interpret dll-imported symbols as none-local.
* config/i386/predicates.md (local_symbolic_operand): Interpret
        dll-imported symbols as none-local.

From-SVN: r197033
2013-03-25 11:51:11 +01:00
Kai Tietz
c0f6f2b4f2 50594.cc: For mingw-targets use only static libstdc++-version.
* testsuite/18_support/50594.cc: For mingw-targets use only static
	libstdc++-version.
	* testsuite/19_diagnostics/error_category/operators/equal.cc
	* testsuite/19_diagnostics/error_code/cons/1.cc
	* testsuite/19_diagnostics/error_code/operators/bool.cc
	* testsuite/19_diagnostics/error_code/operators/equal.cc
	* testsuite/19_diagnostics/error_code/operators/not_equal.cc
	* testsuite/19_diagnostics/error_condition/cons/1.cc
	* testsuite/19_diagnostics/error_condition/operators/bool.cc
	* testsuite/19_diagnostics/error_condition/operators/equal.cc
	* testsuite/19_diagnostics/error_condition/operators/not_equal.cc
	* testsuite/23_containers/set/requirements/exception/basic.cc
	* testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
	* testsuite/lib/dg-options.exp (dg-additional-options): New option.

From-SVN: r197032
2013-03-25 11:47:39 +01:00
Richard Biener
76421b449b tree-ssa-loop-im.c (struct depend): Remove.
2013-03-25  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-im.c (struct depend): Remove.
	(struct lim_aux_data): Make depends a vec of gimples.
	(free_lim_aux_data): Adjust.
	(add_dependency): Likewise.
	(set_level): Likewise.

From-SVN: r197031
2013-03-25 09:44:25 +00:00
Richard Biener
d154bfa22d re PR rtl-optimization/56434 (document that __attribute__((__malloc__)) assumes returned pointer has BIGGEST_ALIGNMENT)
2013-03-25  Richard Biener  <rguenther@suse.de>

	PR middle-end/56434
	* calls.c (expand_call): Use MALLOC_ABI_ALIGNMENT to annotate
	the pointer returned by calls with ECF_MALLOC set.

From-SVN: r197030
2013-03-25 09:39:52 +00:00
GCC Administrator
c42ee993cf Daily bump.
From-SVN: r197029
2013-03-25 00:16:33 +00:00
Tilo Schwarz
6790f448bb MAINTAINERS (Write After Approval): Add myself.
2013-02-24  Tilo Schwarz  <tilo@tilo-schwarz.de>

	* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r197025
2013-03-24 23:37:39 +00:00
Uros Bizjak
acef5fe00e mmx.md (mov<mode>): Add ?!Ym,r and r,?!Ym alternatives.
* config/i386/mmx.md (mov<mode>): Add ?!Ym,r and r,?!Ym alternatives.

From-SVN: r197024
2013-03-24 23:22:21 +01:00
Jonathan Wakely
95a83503a0 re PR libstdc++/56170 (Extension debug_allocator seems non-compliant w.r.t. rebind)
PR libstdc++/56170
	* include/ext/debug_allocator.h (debug_allocator): Add missing members
	to meet allocator requirements.
	* testsuite/ext/debug_allocator/56170.cc: New.

From-SVN: r197023
2013-03-24 22:10:29 +00:00
Uros Bizjak
2cd9804e80 sse.md (mov<mode>): Merge with movv2sf expander using MMXMODE mode iterator.
* config/i386/sse.md (mov<mode>): Merge with movv2sf expander
	using MMXMODE mode iterator.
	(*move<mode>_internal): Merge with *movv2sf_internal and
	*movv2sf_internal_rex64 using MMXMODE mode iterator.

From-SVN: r197021
2013-03-24 19:26:48 +01:00
Tobias Burnus
a73421c460 re PR libfortran/56696 (Formatted (list-directed) input fails to signal end of record)
2013-03-24  Tobias Burnus  <burnus@net-b.de>

        PR fortran/56696
        * io/list_read.c (read_real): Fix EOF diagnostic.

2013-03-24  Tobias Burnus  <burnus@net-b.de>

        PR fortran/56696
        * gfortran.dg/eof_5.f90: New.

From-SVN: r197019
2013-03-24 11:16:33 +01:00
Andi Kleen
b01819be5d Avoid nonconst memmodels in libitm's local outdated copy of <atomic> too
This avoids warnings in libitm for non constant memory models,
fixing the bootstrap with -Werror

Passed bootstrap and test on x86_64-linux.

libitm/:

2013-03-23  Andi Kleen  <andi@my.domain.org>

	* local_atomic (__always_inline): Add.
	(__calculate_memory_order, atomic_thread_fence,
	 atomic_signal_fence, test_and_set, clear, store, load,
         exchange, compare_exchange_weak, compare_exchange_strong,
         fetch_add, fetch_sub, fetch_and, fetch_or, fetch_xor):
	Add __always_inline to force inlining.

From-SVN: r197018
2013-03-24 00:23:20 +00:00
Andi Kleen
94f3ccc8d9 Avoid non constant memory model uses in libatomic
x86 ends up using non constant memory models for some of the libatomic
functions. These all end up as __ATOMIC_SEQ_CST. Just use this
directly. This avoids a new warning for non constant memory
models, which broke the bootstrap with -Werror

Passed bootstrap and test on x86_64-linux.

libatomic/:

2013-03-23  Andi Kleen  <ak@linux.intel.com>

	* gcas.c: (EXACT_INLINE): Use __ATOMIC_SEQ_CST.
	* gexch.c: (EXACT_INLINE): Use __ATOMIC_SEQ_CST.
	* gload.c: (EXACT_INLINE): Use __ATOMIC_SEQ_CST.
	* gstore.c: (EXACT_INLINE): Use __ATOMIC_SEQ_CST.

diff --git a/libatomic/gcas.c b/libatomic/gcas.c
index edbf611..e3d77f3 100644
--- a/libatomic/gcas.c
+++ b/libatomic/gcas.c
@@ -32,7 +32,7 @@
 # define EXACT_INLINE(N)					\
   if (C2(HAVE_ATOMIC_CAS_,N))					\
     return __atomic_compare_exchange_n				\
-      (PTR(N,mptr), PTR(N,eptr), *PTR(N,dptr), false, smodel, fmodel)
+      (PTR(N,mptr), PTR(N,eptr), *PTR(N,dptr), false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)
 #else
 # define EXACT_INLINE(N)
 #endif
diff --git a/libatomic/gexch.c b/libatomic/gexch.c
index 1999067..c8c8658 100644
--- a/libatomic/gexch.c
+++ b/libatomic/gexch.c
@@ -33,7 +33,7 @@
   if (C2(HAVE_ATOMIC_EXCHANGE_,N))				\
     {								\
       *PTR(N,rptr) = __atomic_exchange_n			\
-	(PTR(N,mptr), *PTR(N,vptr), smodel);			\
+	(PTR(N,mptr), *PTR(N,vptr), __ATOMIC_SEQ_CST);		\
       return;							\
     }
 #else
diff --git a/libatomic/gload.c b/libatomic/gload.c
index df318d5..85865bd 100644
--- a/libatomic/gload.c
+++ b/libatomic/gload.c
@@ -32,7 +32,7 @@
 # define EXACT_INLINE(N, DEST, SRC, DONE)			\
   if (C2(HAVE_ATOMIC_LDST_,N))					\
     {								\
-      DEST = __atomic_load_n (SRC, smodel);			\
+      DEST = __atomic_load_n (SRC, __ATOMIC_SEQ_CST);		\
       DONE;							\
     }
 #else
diff --git a/libatomic/gstore.c b/libatomic/gstore.c
index d571e58..84f9a8d 100644
--- a/libatomic/gstore.c
+++ b/libatomic/gstore.c
@@ -32,7 +32,7 @@
 # define EXACT_INLINE(N)					\
   if (C2(HAVE_ATOMIC_LDST_,N))					\
     {								\
-      __atomic_store_n (PTR(N,mptr), *PTR(N,vptr), smodel);	\
+      __atomic_store_n (PTR(N,mptr), *PTR(N,vptr), __ATOMIC_SEQ_CST);	\
       return;							\
     }
 #else

From-SVN: r197017
2013-03-24 00:23:10 +00:00
GCC Administrator
0b8799fbf3 Daily bump.
From-SVN: r197016
2013-03-24 00:16:47 +00:00
Steven Bosscher
85c0f02d87 gcse.c (oprs_unchanged_p): Respect flag_gcse_lm.
* gcse.c (oprs_unchanged_p): Respect flag_gcse_lm.
	(record_last_mem_set_info): Likewise.

From-SVN: r197012
2013-03-23 21:41:38 +00:00
Steven Bosscher
225ccc68d7 df-core.c (rest_of_handle_df_initialize): Use XCNEWVEC instead of XNEWVEC followed by memset.
* df-core.c (rest_of_handle_df_initialize): Use XCNEWVEC instead
	of XNEWVEC followed by memset.
	(df_worklist_dataflow): Use XNEWVEC instead of xmalloc with a cast.

From-SVN: r197011
2013-03-23 21:40:20 +00:00
Sebastian Huber
17a02b0648 builtins.exp: Sort targets alphabetically.
2013-03-23  Sebastian Huber  <sebastian.huber@embedded-brains.de>

	* gcc.c-torture/execute/builtins/builtins.exp: Sort targets
	alphabetically.

From-SVN: r197007
2013-03-23 15:34:49 +00:00
Steven Bosscher
b64925dc4b avr.c, [...]: Where applicable...
* config/avr/avr.c, config/bfin/bfin.c, config/c6x/c6x.c,
	config/epiphany/epiphany.c, config/frv/frv.c, config/ia64/ia64.c,
	config/iq2000/iq2000.c, config/mcore/mcore.c, config/mep/mep.c,
	config/mmix/mmix.c, config/pa/pa.c, config/rs6000/rs6000.c,
	config/s390/s390.c, config/sparc/sparc.c, config/spu/spu.c,
	config/stormy16/stormy16.c, config/v850/v850.c, config/xtensa/xtensa.c,
	dwarf2out.c, hw-doloop.c, resource.c, rtl.h : Where applicable, use
	the predicates NOTE_P, NONJUMP_INSN_P, JUMP_P, CALL_P, LABEL_P, and
	BARRIER_P instead of GET_CODE.

From-SVN: r197005
2013-03-23 12:11:10 +00:00
Eric Botcazou
b9aaf52e25 sparc.c (sparc_emit_probe_stack_range): Fix small inaccuracy in the probing code.
* config/sparc/sparc.c (sparc_emit_probe_stack_range): Fix small
	inaccuracy in the probing code.

	* config/sparc/sparc.md (ctrapsi4): Add predicate for operand #3.
	(ctrapdi4): Likewise.

From-SVN: r197004
2013-03-23 11:32:40 +00:00
Eric Botcazou
66de4d7c91 calls.c (expand_call): Add missing guard to code handling return of non-BLKmode structures in MSB.
* calls.c (expand_call): Add missing guard to code handling return
	of non-BLKmode structures in MSB.
	* function.c (expand_function_end): Likewise.

From-SVN: r197003
2013-03-23 11:13:39 +00:00
Eric Botcazou
4f25c8fbfd combine.c (try_combine): Adjust comment.
* combine.c (try_combine): Adjust comment.  Do not add the set of
	insn #0 if the destination indirectly is set or dies in insn #2.
	Tidy up code to distribute a new note.

From-SVN: r197002
2013-03-23 11:06:21 +00:00
GCC Administrator
956d29dff6 Daily bump.
From-SVN: r196989
2013-03-23 00:16:24 +00:00
Jason Merrill
e0ef0af535 re PR c++/56684 ([C++0x] ICE: unexpected expression 'T' of kind template_parm_index)
PR c++/56684
	* pt.c (instantiation_dependent_r): Check DECL_INITIAL of VAR_DECL
	and CONST_DECL.

From-SVN: r196983
2013-03-22 16:24:17 -04:00
Uros Bizjak
23b7850d10 i386.md (*movdi_internal): Set prefix_rex attribute also for alternatives 16 and 17.
* config/i386/i386.md (*movdi_internal): Set prefix_rex attribute
	also for alternatives 16 and 17.

From-SVN: r196982
2013-03-22 20:15:41 +01:00
Uros Bizjak
bed852cf7a sse.md (*mov<mode>_internal): Merge with *mov<mode>_internal_rex64.
* config/i386/sse.md (*mov<mode>_internal): Merge with
	*mov<mode>_internal_rex64.  Use x64 and nox64 isa attributes.
	Emit insn template depending on type attribute.  Use
	HAVE_AS_IX86_INTERUNIT_MOVQ to handle broken assemblers that require
	movd instead of movq mnemonic for interunit moves.  Rewrite mode
	attribute calculation.  Remove unit attribute calculation.
	Set prefix attribute to maybe_vex for sselog1 and ssemov types.
	Set prefix_data16 attribute for DImode ssemov types.
	Use Ym instead of y for SSE-MMX conversion alternatives.
	Reorder operand constraints.

testsuite/ChangeLog:

	* gcc.target/i386/pr22152.c (dg-options): Add -mtune=core2.

From-SVN: r196981
2013-03-22 19:40:13 +01:00
Steven Bosscher
1e8a79379d df.h (df_insn_delete): Adjust prototype.
* df.h (df_insn_delete): Adjust prototype.
	* emit-rtl.c (remove_insn): Pass a basic block to df_insn_delete
	and let it decide whether mark the basic block dirty.
	(set_insn_deleted): Only pass INSN_P insns to df_insn_delete.
	* df-scan.c (df_insn_info_delete): New helper function, split
	off from df_insn_delete.
	(df_scan_free_bb_info): Use it.
	(df_insn_rescan, df_insn_rescan_all, df_process_deferred_rescans):
	Likewise.
	(df_insn_delete): Likewise.  Take insn rtx as argument.  Verify
	that the insn is actually an insn and it has a non-NULL basic block.
	Do not mark basic block dirty if only deleting a DEBUG_INSN.

From-SVN: r196978
2013-03-22 16:37:24 +00:00
Steven Bosscher
80eb8028eb df.h (df_insn_delete): Adjust prototype.
* df.h (df_insn_delete): Adjust prototype.
	* emit-rtl.c (remove_insn): Pass a basic block to df_insn_delete
	and let it decide whether mark the basic block dirty.
	(set_insn_deleted): Only pass INSN_P insns to df_insn_delete.
	* df-scan.c (df_insn_info_delete): New helper function, split
	off from df_insn_delete.
	(df_scan_free_bb_info): Use it.
	(df_insn_rescan, df_insn_rescan_all, df_process_deferred_rescans):
	Likewise.
	(df_insn_delete): Likewise.  Take insn rtx as argument.  Verify
	that the insn is actually an insn and it has a non-NULL basic block.
	Do not mark basic block dirty if only deleting a DEBUG_INSN.

From-SVN: r196977
2013-03-22 16:37:00 +00:00
Sebastian Huber
f13a8728c1 re PR testsuite/55994 (multiple definition or memset or strlen for builtins tests with LTO options)
2013-03-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>

	PR testsuite/55994
	* gcc.c-torture/execute/builtins/builtins.exp: Add
	-Wl,--allow-multiple-definition for RTEMS targets.

From-SVN: r196970
2013-03-22 15:45:10 +00:00
Jakub Jelinek
a745e44403 Fix up ChangeLog entry date.
From-SVN: r196965
2013-03-22 15:17:24 +01:00
Jakub Jelinek
1868beeeca re PR other/43620 ([4.3 Release Blocker] Uploading to gnu.org will fail due to automake security issue)
PR other/43620
	* configure.ac (AM_INIT_AUTOMAKE): Add no-dist.
	* Makefile.in: Regenerated.
	* asan/Makefile.in: Regenerated.
	* interception/Makefile.in: Regenerated.
	* sanitizer_common/Makefile.in: Regenerated.
	* tsan/Makefile.in: Regenerated.

From-SVN: r196964
2013-03-22 15:14:42 +01:00
Richard Biener
e14d094cac tree-ssa-loop-im.c (struct mem_ref): Remove indep_ref and dep_ref members.
2013-03-22  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-im.c (struct mem_ref): Remove indep_ref and
	dep_ref members.
	(mem_ref_alloc): Do not allocate them.
	(refs_independent_p): Do not query or maintain a cache.

From-SVN: r196961
2013-03-22 13:07:20 +00:00
Richard Biener
e9cf7316cb tree-ssa-loop-im.c (memory_references): Drop all_refs_in_loop.
2013-03-22  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-im.c (memory_references): Drop all_refs_in_loop.
	(gather_mem_refs_in_loops): Do not compute it.
	(analyze_memory_references): Do not allocate it.
	(tree_ssa_lim_finalize): Do not free it.
	(for_all_locs_in_loop): Do not query all_refs_in_loop.

From-SVN: r196960
2013-03-22 13:06:33 +00:00
Richard Biener
f046e81b86 is-a.h (as_a): Use gcc_checking_assert.
2013-03-22  Richard Biener  <rguenther@suse.de>

	* is-a.h (as_a): Use gcc_checking_assert.

From-SVN: r196959
2013-03-22 13:01:42 +00:00
Ian Bolton
a05c0ddfb2 AArch64 MOVK fix to operand 2
From-SVN: r196958
2013-03-22 12:07:20 +00:00
Ian Bolton
b315f09425 Testcases that should have been committed with previous patch commits
From-SVN: r196957
2013-03-22 12:06:10 +00:00
Richard Biener
c00217fc25 tree-ssa-loop-im.c (memory_references): Add refs_stored_in_loop bitmaps.
2013-03-22  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-im.c (memory_references): Add refs_stored_in_loop
	bitmaps.
	(gather_mem_refs_in_loops): Perform store accumulation here.
	(create_vop_ref_mapping_loop): Remove.
	(create_vop_ref_mapping): Likewise.
	(analyze_memory_references): Initialize refs_stored_in_loop.
	(LOOP_DEP_BIT): New define to map to bits in (in)dep_loop
	bitmaps.
	(record_indep_loop): Remove.
	(record_dep_loop): New function.
	(ref_indep_loop_p_1): Adjust to only walk over references
	in the loop, not its subloops.
	(ref_indep_loop_p): Rename to ...
	(ref_indep_loop_p_2): ... this and recurse over the loop tree,
	maintaining a more fine-grained cache.
	(ref_indep_loop_p): Wrap ref_indep_loop_p_2.
	(tree_ssa_lim_finalize): Free refs_stored_in_loop.

From-SVN: r196956
2013-03-22 11:22:14 +00:00
Paolo Carlini
7ad689673f re PR libstdc++/56678 ([c++11] non-uglified name in <chrono>)
2013-03-22  Paolo Carlini  <paolo.carlini@oracle.com>

	PR libstdc++/56678
	* include/std/chrono (__is_ratio): Uglify T.

From-SVN: r196954
2013-03-22 10:44:42 +00:00
Jakub Jelinek
1faae6ef50 * gennews (files): Add files for GCC 4.8.
From-SVN: r196902
2013-03-22 10:47:51 +01:00
Kai Tietz
226e58b766 * lang.c (put_decl_node): Don't iterate over end_params_node.
From-SVN: r196901
2013-03-22 10:40:39 +01:00
Kai Tietz
8280eba03b win64.S: Make use of ffi_closure_win64_inner symbol pc-relative.
* src/x86/win64.S: Make use of ffi_closure_win64_inner
	symbol pc-relative.

From-SVN: r196900
2013-03-22 10:38:55 +01:00
Richard Biener
15d19bf8d0 tree-ssa-loop-im.c (struct mem_ref_locs): Remove.
2013-03-22  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop-im.c (struct mem_ref_locs): Remove.
	(struct mem_ref): Make accesses_in_loop a vec of a vec of
	aggregate mem_ref_loc.
	(free_mem_ref_locs): Inline into ...
	(memref_free): ... this and adjust.
	(mem_ref_alloc): Adjust.
	(mem_ref_locs_alloc): Remove.
	(record_mem_ref_loc): Adjust.
	(get_all_locs_in_loop): Rewrite into ...
	(for_all_locs_in_loop): ... this iterator.
	(rewrite_mem_ref_loc): New functor.
	(rewrite_mem_refs): Use for_all_locs_in_loop.
	(sm_set_flag_if_changed): New functor.
	(execute_sm_if_changed_flag_set): Use for_all_locs_in_loop.
	(ref_always_accessed): New functor.
	(ref_always_accessed_p): Use for_all_locs_in_loop.

From-SVN: r196899
2013-03-22 09:12:46 +00:00
Gabriel Dos Reis
9dc6f476ce cp-tree.h (identifier_p): New.
* cp-tree.h (identifier_p): New.
	* call.c: Throughout, call identifier_p insstead of direct
	comparaison of TREE_CODE against IDENTIFIER_NODE.
	* decl.c: Likewisse.
	* decl2.c: Likewise.
	* init.c: Likewise.
	* mangle.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

From-SVN: r196897
2013-03-22 03:55:51 +00:00
GCC Administrator
35054b15e4 Daily bump.
From-SVN: r196896
2013-03-22 00:16:47 +00:00
Marc Glisse
6f37411dca tree-pass.h (PROP_gimple_lvec): New.
2013-03-21  Marc Glisse  <marc.glisse@inria.fr>

	* tree-pass.h (PROP_gimple_lvec): New.
	* passes.c (dump_properties): Handle PROP_gimple_lvec.
	(init_optimization_passes): Move pass_lower_vector.
	* tree-vect-generic.c (gate_expand_vector_operations_ssa): Test
	PROP_gimple_lvec.
	(pass_lower_vector): Provide PROP_gimple_lvec.
	(pass_lower_vector_ssa): Likewise.
	* cfgexpand.c (pass_expand): Require PROP_gimple_lvec.

From-SVN: r196890
2013-03-21 21:11:56 +00:00
Mark Wielaard
511ef689f4 dwarf2out.c (size_of_aranges): Skip DECL_IGNORED_P functions.
From-SVN: r196889
2013-03-21 20:51:52 +00:00
Uros Bizjak
cc1df30bb1 i386.md (*movdi_internal): Disparage slightly all MMX moves to/from memory.
* config/i386/i386.md (*movdi_internal): Disparage slightly
	all MMX moves to/from memory.  Use Yi instead of x for SSE-MMX
	conversion alternatives.

From-SVN: r196888
2013-03-21 21:22:12 +01:00
Jakub Jelinek
37e9911604 re PR middle-end/48087 (-Wall -Werror adds warnings over and above those generated by -Wall)
PR middle-end/48087
	* diagnostic.def (DK_WERROR): New kind.
	* diagnostic.h (werrorcount): Define.
	* diagnostic.c (diagnostic_report_diagnostic): For DK_WARNING
	promoted to DK_ERROR, increment DK_WERROR counter instead of
	DK_ERROR counter.
	* toplev.c (toplev_main): Call print_ignored_options even if
	just werrorcount is non-zero.  Exit with FATAL_EXIT_CODE
	even if just werrorcount is non-zero.

	* pt.c (convert_nontype_argument): Count werrorcount as warnings.
	* call.c (build_temp): Likewise.
	* method.c (synthesize_method): Likewise.
	* typeck.c (convert_for_initialization): Likewise.

From-SVN: r196887
2013-03-21 18:36:47 +01:00
Jakub Jelinek
c845cfe1af re PR debug/55608 (Debug info quality regressions with file scope vars)
PR debug/55608
	* dwarf2out.c (tree_add_const_value_attribute): Call ggc_free (array)
	on failure.
	(resolve_one_addr): Fail if referenced STRING_CST hasn't been written.
	(string_cst_pool_decl): New function.
	(optimize_one_addr_into_implicit_ptr): New function.
	(resolve_addr_in_expr): Optimize DWARF location expression
	DW_OP_addr DW_OP_stack_value where DW_OP_addr refers to some variable
	which doesn't live in memory, but has DW_AT_location or
	DW_AT_const_value, or refers to a string literal, into
	DW_OP_GNU_implicit_pointer.
	(optimize_location_into_implicit_ptr): New function.
	(resolve_addr): If removing DW_AT_location of a variable because
	it was DW_OP_addr of address of the variable, but the variable doesn't
	live in memory, try to emit const value attribute for the initializer.

From-SVN: r196886
2013-03-21 18:35:39 +01:00