From 726612d29af73d63826b0e9f74e5a5b2765b7b7e Mon Sep 17 00:00:00 2001
From: Richard Guenther <rguenther@suse.de>
Date: Sun, 13 Jan 2008 16:30:51 +0000
Subject: [PATCH] re PR c/34601 (ICE with undefined enum)

2008-01-13  Richard Guenther  <rguenther@suse.de>

	PR middle-end/34601
	* emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
	instead of TYPE_MODE to deal with calls from expand_one_error_var.

	* gcc.dg/noncompile/incomplete-4.c: New testcase.

From-SVN: r131506
---
 gcc/ChangeLog                                  | 6 ++++++
 gcc/emit-rtl.c                                 | 2 +-
 gcc/testsuite/ChangeLog                        | 5 +++++
 gcc/testsuite/gcc.dg/noncompile/incomplete-4.c | 4 ++++
 4 files changed, 16 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.dg/noncompile/incomplete-4.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9ea747dcf1f7..27b488216c91 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-01-13  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/34601
+	* emit-rtl.c (set_reg_attrs_for_decl_rtl): Use DECL_MODE
+	instead of TYPE_MODE to deal with calls from expand_one_error_var.
+
 2008-01-13  Uros Bizjak  <ubizjak@gmail.com>
 
 	* gcse.c (cprop_jump): Call validate_unshare_change instead of
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 5a2aede40ddc..bef4d58f53d0 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -1006,7 +1006,7 @@ set_reg_attrs_for_decl_rtl (tree t, rtx x)
   if (REG_P (x))
     REG_ATTRS (x)
       = get_reg_attrs (t, byte_lowpart_offset (GET_MODE (x),
-					       TYPE_MODE (TREE_TYPE (t))));
+					       DECL_MODE (t)));
   if (GET_CODE (x) == CONCAT)
     {
       if (REG_P (XEXP (x, 0)))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b067970ec88d..521407af5acf 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-13  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/34601
+	* gcc.dg/noncompile/incomplete-4.c: New testcase.
+
 2008-01-13  Jan Hubicka  <jh@suse.cz>
 
 	PR middle-end/32135
diff --git a/gcc/testsuite/gcc.dg/noncompile/incomplete-4.c b/gcc/testsuite/gcc.dg/noncompile/incomplete-4.c
new file mode 100644
index 000000000000..a4f47694d65b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/noncompile/incomplete-4.c
@@ -0,0 +1,4 @@
+void foo()
+{
+  enum E e; /* { dg-error "storage size" } */
+}
-- 
GitLab