aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2015-02-16 11:16:33 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2015-02-16 11:16:33 +0000
commit3d5cb23da1ea830d33eea2a1a19912ee7dd63c45 (patch)
treece56072c2706198ec64cda9b65fcca06893dfbd5 /gcc
parentd39023b4d5a35bd5924eaa8593068a62894b9747 (diff)
downloadgcc-3d5cb23da1ea830d33eea2a1a19912ee7dd63c45.zip
gcc-3d5cb23da1ea830d33eea2a1a19912ee7dd63c45.tar.gz
gcc-3d5cb23da1ea830d33eea2a1a19912ee7dd63c45.tar.bz2
re PR c/65066 (ICE: Segmentation fault with -Wformat=2)
PR c/65066 * c-format.c (check_format_types): Handle null param. * gcc.dg/pr65066.c: New test. From-SVN: r220732
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-format.c1
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr65066.c12
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 804c1db..45261cd 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-16 Marek Polacek <polacek@redhat.com>
+
+ PR c/65066
+ * c-format.c (check_format_types): Handle null param.
+
2015-02-13 Marek Polacek <polacek@redhat.com>
PR c/65040
diff --git a/gcc/c-family/c-format.c b/gcc/c-family/c-format.c
index 2f49b2d..9d03ff0 100644
--- a/gcc/c-family/c-format.c
+++ b/gcc/c-family/c-format.c
@@ -2492,6 +2492,7 @@ check_format_types (location_t loc, format_wanted_type *types)
&& TREE_CODE (cur_type) == INTEGER_TYPE
&& warn_format_signedness
&& TYPE_UNSIGNED (wanted_type)
+ && cur_param != NULL_TREE
&& TREE_CODE (cur_param) == NOP_EXPR)
{
tree t = TREE_TYPE (TREE_OPERAND (cur_param, 0));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 01dc072..edbb95d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-16 Marek Polacek <polacek@redhat.com>
+
+ PR c/65066
+ * gcc.dg/pr65066.c: New test.
+
2015-02-16 Ilya Enkovich <ilya.enkovich@intel.com>
* gcc.dg/pr65002.C: Move ...
diff --git a/gcc/testsuite/gcc.dg/pr65066.c b/gcc/testsuite/gcc.dg/pr65066.c
new file mode 100644
index 0000000..883a87d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr65066.c
@@ -0,0 +1,12 @@
+/* PR c/65066 */
+/* { dg-do compile } */
+/* { dg-options "-Wformat=2" } */
+
+extern int sscanf (const char *restrict, const char *restrict, ...);
+int *a;
+
+void
+foo ()
+{
+ sscanf (0, "0x%x #", a); /* { dg-warning "expects argument of type" } */
+}