[PR 87347] Prevent segfaults if TYPE_ARG_TYPES is NULL
authorMartin Jambor <mjambor@suse.cz>
Wed, 26 Sep 2018 11:58:18 +0000 (13:58 +0200)
committerMartin Jambor <jamborm@gcc.gnu.org>
Wed, 26 Sep 2018 11:58:18 +0000 (13:58 +0200)
2018-09-26  Martin Jambor  <mjambor@suse.cz>

PR c/87347
c/
* c-parser.c (warn_for_abs): Bail out if TYPE_ARG_TYPES is NULL.  Fix
        comment.

testsuite/
* gcc.dg/pr87347.c: New test.

From-SVN: r264640

gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr87347.c [new file with mode: 0644]

index 6fd76cfe970379d542b9d8de8f621149b5afa808..1ea87b95a52375b660e8de3fe5c67f6825c56d5b 100644 (file)
@@ -1,3 +1,9 @@
+2018-09-26  Martin Jambor  <mjambor@suse.cz>
+
+       PR c/87347
+       * c-parser.c (warn_for_abs): Bail out if TYPE_ARG_TYPES is NULL.  Fix
+        comment.
+
 2018-09-17  David Malcolm  <dmalcolm@redhat.com>
 
        * c-objc-common.c (range_label_for_type_mismatch::get_text):
index 1766a256633bc41a67e0f42fc1c62ac5fe564eef..1f173fc10e229e477cbd5f75ba02e6fd169b6435 100644 (file)
@@ -9102,8 +9102,8 @@ sizeof_ptr_memacc_comptypes (tree type1, tree type2)
 }
 
 /* Warn for patterns where abs-like function appears to be used incorrectly,
-   gracely ignore any non-abs-like function.  The warning location should be
-   LOC.  FNDECL is the declaration of called function, it must be a
+   gracefully ignore any non-abs-like function.  The warning location should
+   be LOC.  FNDECL is the declaration of called function, it must be a
    BUILT_IN_NORMAL function.  ARG is the first and only argument of the
    call.  */
 
@@ -9223,6 +9223,9 @@ warn_for_abs (location_t loc, tree fndecl, tree arg)
       return;
     }
 
+  if (!TYPE_ARG_TYPES (TREE_TYPE (fndecl)))
+    return;
+
   tree ftype = TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (fndecl)));
   if (TREE_CODE (atype) == COMPLEX_TYPE)
     {
index 2533259cf9c644c7f262a21aa3caf6e3a45960ba..49df3a1398b263ebadc5d71ab839e4365a1be320 100644 (file)
@@ -1,3 +1,8 @@
+2018-09-26  Martin Jambor  <mjambor@suse.cz>
+
+       PR c/87347
+       * gcc.dg/pr87347.c: New test.
+
 2018-09-26  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/71131
diff --git a/gcc/testsuite/gcc.dg/pr87347.c b/gcc/testsuite/gcc.dg/pr87347.c
new file mode 100644 (file)
index 0000000..d0bdf2a
--- /dev/null
@@ -0,0 +1,6 @@
+/* {dg-do compile} */
+/* { dg-options "-Wabsolute-value" } */
+
+int a;
+int abs();
+void b() { abs(a); }