@@ -1396,6 +1396,30 @@ class TestValueFlow : public TestFixture {
13961396 ASSERT_EQUALS (1U , values.size ());
13971397 ASSERT_EQUALS (4 , values.back ().intvalue );
13981398
1399+ code = " char& r = i;\n "
1400+ " sizeof(r);" ;
1401+ values = tokenValues (code, " ( r" );
1402+ ASSERT_EQUALS (1U , values.size ());
1403+ ASSERT_EQUALS (1 , values.back ().intvalue );
1404+
1405+ code = " char* p;\n "
1406+ " sizeof(p);" ;
1407+ values = tokenValues (code, " ( p" );
1408+ ASSERT_EQUALS (1U , values.size ());
1409+ ASSERT_EQUALS (settings.platform .sizeof_pointer , values.back ().intvalue );
1410+
1411+ code = " char*& pr = p;\n "
1412+ " sizeof(pr);" ;
1413+ values = tokenValues (code, " ( pr" );
1414+ ASSERT_EQUALS (1U , values.size ());
1415+ ASSERT_EQUALS (settings.platform .sizeof_pointer , values.back ().intvalue );
1416+
1417+ code = " struct { char& r; char* p; } s{ x, y};\n "
1418+ " sizeof(s);\n " ;
1419+ values = tokenValues (code, " ( s" );
1420+ ASSERT_EQUALS (1U , values.size ());
1421+ ASSERT_EQUALS (2 * settings.platform .sizeof_pointer , values.back ().intvalue );
1422+
13991423#define CHECK3 (A, B, C ) \
14001424 do { \
14011425 code = " void f() {\n " \
0 commit comments