Commit 0a2695db by Mark Mitchell Committed by Mark Mitchell

re PR c++/18416 (ICE in import_export_decl)

	PR c++/18416
	* passes.c (rest_of_decl_compilation): Do not look at DECL_RTL
	when deciding whether to pass a variable to
	cgraph_varpool_finalize_decl or assemble_variable.
	* toplev.c (check_global_declarations): Do not clear DECL_RTL.

	PR c++/18416
	* g++.dg/init/global1.C: New test.

From-SVN: r90532
parent 896b242c
2004-11-12 Mark Mitchell <mark@codesourcery.com>
PR c++/18416
* passes.c (rest_of_decl_compilation): Do not look at DECL_RTL
when deciding whether to pass a variable to
cgraph_varpool_finalize_decl or assemble_variable.
* toplev.c (check_global_declarations): Do not clear DECL_RTL.
2004-11-12 Kazu Hirata <kazu@cs.umass.edu>
* tree-vectorizer.c: Fix a comment typo.
......
......@@ -229,14 +229,7 @@ rest_of_decl_compilation (tree decl,
&& !DECL_EXTERNAL (decl))
{
if (flag_unit_at_a_time && !cgraph_global_info_ready
&& TREE_CODE (decl) != FUNCTION_DECL && top_level
/* If we defer processing of decls that have had their
DECL_RTL set above (say, in make_decl_rtl),
check_global_declarations() will clear it before
assemble_variable has a chance to act on it. This
would remove all traces of the register name in a
global register variable, for example. */
&& !DECL_RTL_SET_P (decl))
&& TREE_CODE (decl) != FUNCTION_DECL && top_level)
cgraph_varpool_finalize_decl (decl);
else
assemble_variable (decl, top_level, at_end, 0);
......
2004-11-12 Mark Mitchell <mark@codesourcery.com>
PR c++/18416
* g++.dg/init/global1.C: New test.
2004-11-12 Eric Botcazou <ebotcazou@act-europe.fr>
* gcc.c-torture/execute/20041112-1.c: New test.
......
// PR c++/18416
class errarg {
enum { EMPTY } type;
public:
errarg();
};
extern errarg empty_errarg;
extern void errprint(const char *,
const errarg &arg1 = empty_errarg,
const errarg &arg2 = empty_errarg,
const errarg &arg3 = empty_errarg);
errarg::errarg() : type(EMPTY)
{
}
errarg empty_errarg;
......@@ -819,13 +819,6 @@ check_global_declarations (tree *vec, int len)
{
decl = vec[i];
if (TREE_CODE (decl) == VAR_DECL && TREE_STATIC (decl)
&& ! TREE_ASM_WRITTEN (decl))
/* Cancel the RTL for this decl so that, if debugging info
output for global variables is still to come,
this one will be omitted. */
SET_DECL_RTL (decl, NULL_RTX);
/* Warn about any function
declared static but not defined.
We don't warn about variables,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment