@@ -1394,6 +1394,63 @@ class TestValueFlow : public TestFixture {
13941394 values = tokenValues (code, " =" );
13951395 ASSERT_EQUALS (1U , values.size ());
13961396 ASSERT_EQUALS (sizeof (std::int32_t ) * 10 * 20 , values.back ().intvalue );
1397+
1398+ code = " struct X { float a; float b; };\n "
1399+ " void f() {\n "
1400+ " x = sizeof(X);\n "
1401+ " }" ;
1402+ values = tokenValues (code, " ( X )" );
1403+ ASSERT_EQUALS (1U , values.size ());
1404+ ASSERT_EQUALS (8 , values.back ().intvalue );
1405+
1406+ code = " struct X { char a; char b; };\n "
1407+ " void f() {\n "
1408+ " x = sizeof(X);\n "
1409+ " }" ;
1410+ values = tokenValues (code, " ( X )" );
1411+ ASSERT_EQUALS (1U , values.size ());
1412+ ASSERT_EQUALS (2 , values.back ().intvalue );
1413+
1414+ code = " struct X { char a; float b; };\n "
1415+ " void f() {\n "
1416+ " x = sizeof(X);\n "
1417+ " }" ;
1418+ values = tokenValues (code, " ( X )" );
1419+ ASSERT_EQUALS (1U , values.size ());
1420+ ASSERT_EQUALS (8 , values.back ().intvalue );
1421+
1422+ code = " struct X { char a; char b; float c; };\n "
1423+ " void f() {\n "
1424+ " x = sizeof(X);\n "
1425+ " }" ;
1426+ values = tokenValues (code, " ( X )" );
1427+ ASSERT_EQUALS (1U , values.size ());
1428+ ASSERT_EQUALS (8 , values.back ().intvalue );
1429+
1430+ code = " struct X { float a; char b; };\n "
1431+ " void f() {\n "
1432+ " x = sizeof(X);\n "
1433+ " }" ;
1434+ values = tokenValues (code, " ( X )" );
1435+ ASSERT_EQUALS (1U , values.size ());
1436+ ASSERT_EQUALS (8 , values.back ().intvalue );
1437+
1438+ code = " struct X { float a; char b; char c; };\n "
1439+ " void f() {\n "
1440+ " x = sizeof(X);\n "
1441+ " }" ;
1442+ values = tokenValues (code, " ( X )" );
1443+ ASSERT_EQUALS (1U , values.size ());
1444+ ASSERT_EQUALS (8 , values.back ().intvalue );
1445+
1446+ code = " struct A { float a; char b; };\n "
1447+ " struct X { A a; char b; };\n "
1448+ " void f() {\n "
1449+ " x = sizeof(X);\n "
1450+ " }" ;
1451+ values = tokenValues (code, " ( X )" );
1452+ ASSERT_EQUALS (1U , values.size ());
1453+ ASSERT_EQUALS (12 , values.back ().intvalue );
13971454 }
13981455
13991456 void valueFlowComma ()
0 commit comments