+2017-05-04 Tom de Vries <tom@codesourcery.com>
+
+ PR testsuite/80557
+ * g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C: Replace absolute
+ line numbers.
+ * g++.dg/warn/miss-format-1.C: Same.
+ * g++.dg/warn/overflow-warn-1.C: Same.
+ * g++.dg/warn/overflow-warn-3.C: Same.
+ * g++.dg/warn/overflow-warn-4.C: Same.
+
2017-05-04 Tom de Vries <tom@codesourcery.com>
PR testsuite/80557
int foo() {
int x;
- float& q = reinterpret_cast<float&> (x); /* { dg-message "dereferencing type-punned" "deref" } */
+ float& q = reinterpret_cast<float&> (x); /* { dg-message "dereferencing type-punned" "deref" } */
+ /* { dg-message "initialized" "note" { xfail *-*-* } .-1 } */
+
q = 1.0; /* { dg-warning "does break strict-aliasing" "strict-aliasing" { xfail *-*-* } } */
return x;
}
-
-/* { dg-message "initialized" "note" { xfail *-*-* } 7 } */
/* { dg-do compile } */
/* { dg-options "-Wmissing-format-attribute" } */
/* { dg-options "-Wmissing-format-attribute -Wno-abi" { target arm_eabi } } */
-/* VxWorks does not provide vscanf, either in kernel or RTP mode. */
-/* { dg-error "not declared" "" { target *-*-vxworks* } 26 } */
#include <stdio.h>
#include <stdarg.h>
va_list ap;
va_start (ap, fmt);
vscanf (fmt, ap); /* { dg-warning "candidate" "scanf attribute warning" { xfail *-*-vxworks* } } */
+ /* VxWorks does not provide vscanf, either in kernel or RTP mode. */
+ /* { dg-error "not declared" "" { target *-*-vxworks* } .-2 } */
va_end (ap);
}
whole expression violates the constraints. */
E4 = 0 * (1 / 0), /* { dg-warning "division by zero" } */
/* { dg-error "enumerator value for 'E4' is not an integer constant" "enum error" { target c++ } .-1 } */
+ /* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } .-2 } */
E5 = INT_MAX + 1, /* { dg-warning "integer overflow in expression" } */
/* { dg-warning "overflow in constant expression" "constant" { target *-*-* } .-1 } */
/* Again, overflow in evaluated subexpression. */
struct s {
int a;
int : 0 * (1 / 0); /* { dg-warning "division by zero" } */
+/* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } .-1 } */
+/* { dg-error "width not an integer constant" "bit.field" { target c++ } .-2 } */
+/* { dg-error "is not a constant expression" "division" { target c++ } .-3 } */
int : 0 * (INT_MAX + 1); /* { dg-warning "integer overflow in expression" } */
/* { dg-warning "overflow in constant expression" "constant" { target *-*-* } .-1 } */
};
subexpression, so is a null pointer constant. */
void *p = 0 * (INT_MAX + 1); /* { dg-warning "integer overflow in expression" } */
/* { dg-warning "invalid conversion from 'int' to 'void" "null" { target *-*-* } .-1 } */
-void *q = 0 * (1 / 0); /* { dg-warning "division by zero" } */
-/* { dg-error "invalid conversion from 'int' to 'void*'" "null" { xfail *-*-* } .-1 } */
-void *r = (1 ? 0 : INT_MAX+1); /* { dg-bogus "integer overflow in expression" "" { xfail *-*-* } } */
+
+void *q = 0 * (1 / 0);
+/* { dg-warning "division by zero" "" { target *-*-* } .-1 } */
+/* { dg-error "invalid conversion from 'int' to 'void*'" "null" { xfail *-*-* } .-2 } */
+/* { dg-warning "invalid conversion from" "convert" { target *-*-* } .-3 } */
+
+void *r = (1 ? 0 : INT_MAX+1);
+/* { dg-bogus "integer overflow in expression" "" { xfail *-*-* } .-1 } */
+/* { dg-warning "invalid conversion from" "convert" { target c++11 } .-2 } */
void
g (int i)
{
switch (i)
{
- case 0 * (1/0): /* { dg-warning "division by zero" } */
+ case 0 * (1/0):
+ /* { dg-warning "division by zero" "" { target *-*-* } .-1 } */
+ /* { dg-error "division by zero is not a constant expression" "division" { target c++11 } .-2 } */
+ /* { dg-error "is not a constant expression" "const" { target *-*-* } .-3 } */
;
case 1 + 0 * (INT_MAX + 1): /* { dg-warning "integer overflow in expression" } */
/* { dg-warning "overflow in constant expression" "constant" { target *-*-* } .-1 } */
ui = INT_MIN;
ui = x ? INT_MIN : 1U;
}
-/* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } 19 } */
-/* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } 32 } */
-/* { dg-warning "invalid conversion from" "convert" { target *-*-* } 56 } */
-/* { dg-warning "invalid conversion from" "convert" { target c++11 } 58 } */
-/* { dg-error "division by zero is not a constant expression" "division" { target c++11 } 65 } */
-/* { dg-error "is not a constant expression" "const" { target *-*-* } 65 } */
-/* { dg-error "width not an integer constant" "bit.field" { target c++ } 32 } */
-/* { dg-error "is not a constant expression" "division" { target c++ } 32 } */
whole expression violates the constraints. */
E4 = 0 * (1 / 0), /* { dg-warning "division by zero" } */
/* { dg-error "enumerator value for 'E4' is not an integer constant" "enum error" { target c++ } .-1 } */
+ /* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } .-2 } */
E5 = INT_MAX + 1, /* { dg-warning "integer overflow in expression" } */
/* { dg-warning "overflow in constant expression" "constant" { target *-*-* } .-1 } */
/* Again, overflow in evaluated subexpression. */
struct s {
int a;
- int : 0 * (1 / 0); /* { dg-warning "division by zero" } */
+ int : 0 * (1 / 0);
+ /* { dg-warning "division by zero" "" { target *-*-* } .-1 } */
+ /* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } .-2 } */
+ /* { dg-error "width not an integer constant" "bit.field" { target c++ } .-3 } */
+ /* { dg-error "is not a constant expression" "division" { target c++ } .-4 } */
int : 0 * (INT_MAX + 1); /* { dg-warning "integer overflow in expression" } */
/* { dg-warning "overflow in constant expression" "constant" { target *-*-* } .-1 } */
};
void *q = 0 * (1 / 0); /* { dg-warning "division by zero" } */
/* { dg-warning "invalid conversion from 'int' to 'void" "null" { target *-*-* } .-1 } */
-void *r = (1 ? 0 : INT_MAX+1); /* { dg-bogus "integer overflow in expression" "" { xfail *-*-* } } */
+void *r = (1 ? 0 : INT_MAX+1);
+/* { dg-bogus "integer overflow in expression" "" { xfail *-*-* } .-1 } */
+/* { dg-warning "invalid conversion from" "convert" { target c++11 } .-2 } */
void
g (int i)
{
switch (i)
{
- case 0 * (1/0): /* { dg-warning "division by zero" } */
- ; /* { dg-error "division by zero is not a constant expression" "division" { target c++11 } .-1 } */
+ case 0 * (1/0):
+ /* { dg-warning "division by zero" "" { target *-*-* } .-1 } */
+ /* { dg-error "division by zero is not a constant expression" "division" { target c++11 } .-2 } */
+ /* { dg-error "not a constant expression" "constant" { target *-*-* } .-3 } */
+ ;
case 1 + 0 * (INT_MAX + 1): /* { dg-warning "integer overflow in expression" } */
/* { dg-warning "overflow in constant expression" "constant" { target *-*-* } .-1 } */
;
ui = INT_MIN;
ui = x ? INT_MIN : 1U;
}
-/* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } 19 } */
-/* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } 32 } */
-/* { dg-warning "invalid conversion from" "convert" { target c++11 } 60 } */
-/* { dg-error "not a constant expression" "constant" { target *-*-* } 67 } */
-/* { dg-error "width not an integer constant" "bit.field" { target c++ } 32 } */
-/* { dg-error "is not a constant expression" "division" { target c++ } 32 } */
whole expression violates the constraints. */
E4 = 0 * (1 / 0), /* { dg-warning "division by zero" } */
/* { dg-error "enumerator value for 'E4' is not an integer constant" "enum error" { target c++ } .-1 } */
+ /* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } .-2 } */
E5 = INT_MAX + 1, /* { dg-warning "integer overflow in expression" } */
/* { dg-error "overflow in constant expression" "constant" { target *-*-* } .-1 } */
/* { dg-error "enumerator value for 'E5' is not an integer constant" "enum error" { target *-*-* } .-2 } */
struct s {
int a;
int : 0 * (1 / 0); /* { dg-warning "division by zero" } */
+ /* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } .-1 } */
+ /* { dg-error "width not an integer constant" "bit.field" { target c++ } .-2 } */
+ /* { dg-error "is not a constant expression" "division" { target c++ } .-3 } */
int : 0 * (INT_MAX + 1); /* { dg-warning "integer overflow in expression" } */
/* { dg-error "overflow in constant expression" "constant" { target *-*-* } .-1 } */
/* { dg-error "bit-field .* width not an integer constant" "" { target *-*-* } .-2 } */
void *q = 0 * (1 / 0); /* { dg-warning "division by zero" } */
/* { dg-error "invalid conversion from 'int' to 'void" "null" { target *-*-* } .-1 } */
-void *r = (1 ? 0 : INT_MAX+1); /* { dg-bogus "integer overflow in expression" "" { xfail *-*-* } } */
+
+void *r = (1 ? 0 : INT_MAX+1);
+/* { dg-bogus "integer overflow in expression" "" { xfail *-*-* } .-1 } */
+/* { dg-error "invalid conversion from" "convert" { target c++11 } .-2 } */
void
g (int i)
{
switch (i)
{
- case 0 * (1/0): /* { dg-warning "division by zero" } */
- ; /* { dg-error "division by zero is not a constant expression" "division" { target c++11 } .-1 } */
+ case 0 * (1/0):
+ /* { dg-warning "division by zero" "" { target *-*-* } .-1 } */
+ /* { dg-error "division by zero is not a constant expression" "division" { target c++11 } .-2 } */
+ /* { dg-error "is not a constant expression" "const" { target *-*-* } .-3 } */
+ ;
case 1 + 0 * (INT_MAX + 1): /* { dg-warning "integer overflow in expression" } */
/* { dg-error "overflow in constant expression" "constant" { target *-*-* } .-1 } */
;
ui = INT_MIN;
ui = x ? INT_MIN : 1U;
}
-/* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } 19 } */
-/* { dg-error "invalid conversion from" "convert" { target c++11 } 63 } */
-/* { dg-error "division by zero is not a constant.expression" "division" { target c++11 } 34 } */
-/* { dg-error "is not a constant expression" "const" { target *-*-* } 70 } */
-/* { dg-error "width not an integer constant" "bit.field" { target c++ } 34 } */
-/* { dg-error "is not a constant expression" "division" { target c++ } 34 } */