OSDN Git Service

* c-decl.c (c_expand_body): Check TYPE_SIZE_UNIT (ret_type)
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Jan 2001 19:19:40 +0000 (19:19 +0000)
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Jan 2001 19:19:40 +0000 (19:19 +0000)
        is not NULL.
        * toplev.c (decode_W_option): Update warn_larger_than
        unconditionally for each processed switch.
        * testsuite/gcc.dg/Wlarger-than.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39352 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/Wlarger-than.c [new file with mode: 0644]
gcc/toplev.c

index 8f5a437..407065b 100644 (file)
@@ -1,3 +1,10 @@
+2001-01-30  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+        * c-decl.c (c_expand_body): Check TYPE_SIZE_UNIT (ret_type)
+        is not NULL.
+        * toplev.c (decode_W_option): Update warn_larger_than
+        unconditionally for each processed switch.
+
 2001-01-30  John David Anglin  <dave@hiauly1.hia.nrc.ca>
 
        * pa.c (pa_init_machine_status): Initialize pic_offset_table_save_rtx
index d5558db..edbe9ce 100644 (file)
@@ -6728,7 +6728,8 @@ c_expand_body (fndecl, nested_p)
     {
       tree ret_type = TREE_TYPE (TREE_TYPE (fndecl));
 
-      if (ret_type && TREE_CODE (TYPE_SIZE_UNIT (ret_type)) == INTEGER_CST
+      if (ret_type && TYPE_SIZE_UNIT (ret_type)
+         && TREE_CODE (TYPE_SIZE_UNIT (ret_type)) == INTEGER_CST
          && 0 < compare_tree_int (TYPE_SIZE_UNIT (ret_type),
                                   larger_than_size))
        {
index abf39f9..a8fd1d3 100644 (file)
@@ -1,3 +1,7 @@
+2001-01-30  Neil Booth  <neil@daikokuya.demon.co.uk>
+
+        * gcc.dg/Wlarger-than.c: New test.
+
 2001-01-29  Neil Booth  <neil@daikokuya.demon.co.uk>
 
         * gcc.dg/cpp/avoidpaste1.c: Fix typos.
diff --git a/gcc/testsuite/gcc.dg/Wlarger-than.c b/gcc/testsuite/gcc.dg/Wlarger-than.c
new file mode 100644 (file)
index 0000000..609a7ae
--- /dev/null
@@ -0,0 +1,10 @@
+/* Copyright (C) 2000 Free Software Foundation, Inc.  */
+
+/* { dg-do compile } */
+/* { dg-options "-Wlarger-than-32768" } */
+
+/* -Wlarger-than with functions returning void used to segfault.
+   Source: PR 602, testsuite-ized by Neil Booth 21 Jan 2000.  */
+
+static void foo (void) {}
+
index d29d6c0..64b9bc3 100644 (file)
@@ -4170,8 +4170,7 @@ decode_W_option (arg)
     {
       larger_than_size = read_integral_parameter (option_value, arg - 2, -1);
 
-      if (larger_than_size != -1)
-       warn_larger_than = 1;
+      warn_larger_than = larger_than_size != -1;
     }
   else if (!strcmp (arg, "unused"))
     {