blob: 04e8490fc0856967e9fb43c0eae00dbe5ddc4b93 [file] [log] [blame]
// { dg-do run }
// { dg-options "-fsanitize=null -Wall -Wno-unused-variable -std=c++11" }
typedef const long int L;
int
main (void)
{
int *p = 0;
L *l = 0;
int &r = *p;
auto &r2 = *p;
L &lr = *l;
// Try an rvalue reference.
auto &&r3 = *p;
// Don't evaluate the reference initializer twice.
int i = 1;
int *q = &i;
int &qr = ++*q;
if (i != 2)
__builtin_abort ();
}
// { dg-output "reference binding to null pointer of type 'int'(\n|\r\n|\r)" }
// { dg-output "\[^\n\r]*reference binding to null pointer of type 'int'(\n|\r\n|\r)" }
// { dg-output "\[^\n\r]*reference binding to null pointer of type 'const L'(\n|\r\n|\r)" }
// { dg-output "\[^\n\r]*reference binding to null pointer of type 'int'" }