* tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
on the local_decls list.
testsuite/
* g++.dg/tree-ssa/pr41275.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151631
138bc75d-0d04-0410-961f-
82ee72b054a4
+2009-09-11 Michael Matz <matz@suse.de>
+
+ PR middle-end/41275
+ * tree-inline.c (remap_decls): Don't put DECL_EXTERNAL decls
+ on the local_decls list.
+
2009-09-11 Alexandre Oliva <aoliva@redhat.com>
PR debug/41276
+2009-09-11 Michael Matz <matz@suse.de>
+
+ PR middle-end/41275
+ * g++.dg/tree-ssa/pr41275.C: New test.
+
2009-09-11 Janus Weil <janus@gcc.gnu.org>
PR fortran/41242
--- /dev/null
+// PR middle-end/41275
+// { dg-do compile }
+// { dg-options "-O2" }
+// this used to ICE
+struct ErrmsgWindow
+{
+ virtual ~ErrmsgWindow()
+ {
+ extern int _switch_mode_errorstr;
+ _switch_mode_errorstr = 42;
+ }
+};
+void ShowErrorMessage(void)
+{
+ ErrmsgWindow w;
+}
if (can_be_nonlocal (old_var, id))
{
if (TREE_CODE (old_var) == VAR_DECL
+ && ! DECL_EXTERNAL (old_var)
&& (var_ann (old_var) || !gimple_in_ssa_p (cfun)))
cfun->local_decls = tree_cons (NULL_TREE, old_var,
cfun->local_decls);