+2016-02-23 David Malcolm <dmalcolm@redhat.com>
+
+ PR preprocessor/69126
+ PR preprocessor/69543
+ * c-c++-common/pr69126-2-long.c: New test.
+ * c-c++-common/pr69126-2-short.c: New test.
+ * c-c++-common/pr69543-1.c: Remove xfail.
+
2016-02-23 David Malcolm <dmalcolm@redhat.com>
PR preprocessor/69126
--- /dev/null
+/* { dg-options "-Wdeprecated-declarations" } */
+
+/* The macro's name is >= 32 characters long, and hence its location
+ requires an ad-hoc location. */
+
+#define IGNORE_WHERE_MACRO_IS_LONGER_THAN_31_CHARS _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
+__attribute__((deprecated)) void f();
+int main() {
+ IGNORE_WHERE_MACRO_IS_LONGER_THAN_31_CHARS
+ f();
+}
--- /dev/null
+/* { dg-options "-Wdeprecated-declarations" } */
+
+/* IGNORE_SHORT_MACRO is < 32 characters long, and hence its location
+ can be stored without needing an ad-hoc location. */
+
+#define IGNORE_SHORT_MACRO _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
+__attribute__((deprecated)) void f();
+int main() {
+ IGNORE_SHORT_MACRO
+ f();
+}
/* Verify disabling a warning, where the _Pragma is within
a macro, but the affected code is *not* in a macro. */
-/* TODO: XFAIL: why does g++ still emit a warning here? (works for C). */
-
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
{
char *yyvsp;
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- *++yyvsp = yylval; /* { dg-bogus "used uninitialized" "" { xfail { c++ } } } */
+ *++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
+2016-02-23 David Malcolm <dmalcolm@redhat.com>
+
+ PR preprocessor/69126
+ PR preprocessor/69543
+ * line-map.c (linemap_compare_locations): At the function top,
+ replace inlined bodies of get_location_from_adhoc_loc with calls
+ to get_location_from_adhoc_loc. Add a pair of calls to
+ get_location_from_adhoc_loc at the bottom of the function, to
+ avoid meaningless comparisons of ad-hoc and non-ad-hoc locations.
+
2016-02-08 David Malcolm <dmalcolm@redhat.com>
PR preprocessor/69664
source_location l0 = pre, l1 = post;
if (IS_ADHOC_LOC (l0))
- l0 = set->location_adhoc_data_map.data[l0 & MAX_SOURCE_LOCATION].locus;
+ l0 = get_location_from_adhoc_loc (set, l0);
if (IS_ADHOC_LOC (l1))
- l1 = set->location_adhoc_data_map.data[l1 & MAX_SOURCE_LOCATION].locus;
+ l1 = get_location_from_adhoc_loc (set, l1);
if (l0 == l1)
return 0;
return i1 - i0;
}
+ if (IS_ADHOC_LOC (l0))
+ l0 = get_location_from_adhoc_loc (set, l0);
+ if (IS_ADHOC_LOC (l1))
+ l1 = get_location_from_adhoc_loc (set, l1);
+
return l1 - l0;
}