summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-15 14:46:06 +0000
committermpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4>2016-04-15 14:46:06 +0000
commiteac243e73da4228256678258dfad7ce78bdedd8c (patch)
tree4f15149dd5627d3e757afed4ee07978cb4680f99
parentf650fd67e30abb3648efeb98cd9b6b42c1e9037c (diff)
downloadgcc-eac243e73da4228256678258dfad7ce78bdedd8c.tar.gz
PR c/70671
* c-typeck.c (build_unary_op): Pass location down to error and warning call. * gcc.dg/bitfld-22.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235032 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/c/ChangeLog6
-rw-r--r--gcc/c/c-typeck.c13
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/bitfld-22.c18
4 files changed, 36 insertions, 6 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 3ba3f4ea2d2..7257f79e0b2 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2016-04-15 Marek Polacek <polacek@redhat.com>
+
+ PR c/70671
+ * c-typeck.c (build_unary_op): Pass location down to error and
+ warning call.
+
2016-04-15 Jakub Jelinek <jakub@redhat.com>
PR c/70436
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index 9a1499428d4..59a3c6153b7 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -4436,8 +4436,8 @@ build_unary_op (location_t location,
case COMPONENT_REF:
if (DECL_C_BIT_FIELD (TREE_OPERAND (arg, 1)))
{
- error ("cannot take address of bit-field %qD",
- TREE_OPERAND (arg, 1));
+ error_at (location, "cannot take address of bit-field %qD",
+ TREE_OPERAND (arg, 1));
return error_mark_node;
}
@@ -4449,15 +4449,16 @@ build_unary_op (location_t location,
if (!AGGREGATE_TYPE_P (TREE_TYPE (arg))
&& !VECTOR_TYPE_P (TREE_TYPE (arg)))
{
- error ("cannot take address of scalar with reverse storage "
- "order");
+ error_at (location, "cannot take address of scalar with "
+ "reverse storage order");
return error_mark_node;
}
if (TREE_CODE (TREE_TYPE (arg)) == ARRAY_TYPE
&& TYPE_REVERSE_STORAGE_ORDER (TREE_TYPE (arg)))
- warning (OPT_Wscalar_storage_order, "address of array with "
- "reverse scalar storage order requested");
+ warning_at (location, OPT_Wscalar_storage_order,
+ "address of array with reverse scalar storage "
+ "order requested");
}
default:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 61c8f128978..0f2e861c5b3 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-04-15 Marek Polacek <polacek@redhat.com>
+
+ PR c/70671
+ * gcc.dg/bitfld-22.c: New test.
+
2016-04-15 Bernd Schmidt <bschmidt@redhat.com>
* gcc.target/i386/pr46470.c: Add -mno-red-zone to dg-options for
diff --git a/gcc/testsuite/gcc.dg/bitfld-22.c b/gcc/testsuite/gcc.dg/bitfld-22.c
new file mode 100644
index 00000000000..2fb904bce24
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/bitfld-22.c
@@ -0,0 +1,18 @@
+/* PR c/70671 */
+/* { dg-do compile } */
+
+extern void bar (int *);
+
+struct S
+{
+ int x:2;
+} s, *r;
+
+void
+foo (void)
+{
+ int *p1 = &s.x; /* { dg-error "13:cannot take address of bit-field 'x'" } */
+ int *p2;
+ p2 = &s.x; /* { dg-error "8:cannot take address of bit-field 'x'" } */
+ bar (&s.x); /* { dg-error "8:cannot take address of bit-field 'x'" } */
+}