189a1d03eSRichard // RUN: %check_clang_tidy %s bugprone-suspicious-memory-comparison %t \
289a1d03eSRichard // RUN: -- -- -target i386-unknown-unknown
389a1d03eSRichard 
489a1d03eSRichard static_assert(sizeof(int *) == sizeof(int));
589a1d03eSRichard 
689a1d03eSRichard namespace std {
789a1d03eSRichard typedef __SIZE_TYPE__ size_t;
889a1d03eSRichard int memcmp(const void *lhs, const void *rhs, size_t count);
989a1d03eSRichard } // namespace std
1089a1d03eSRichard 
1189a1d03eSRichard namespace no_padding_on_32bit {
1289a1d03eSRichard struct S {
1389a1d03eSRichard   int x;
1489a1d03eSRichard   int *y;
1589a1d03eSRichard };
1689a1d03eSRichard 
test()1789a1d03eSRichard void test() {
1889a1d03eSRichard   S a, b;
1989a1d03eSRichard   std::memcmp(&a, &b, sizeof(S));
2089a1d03eSRichard }
2189a1d03eSRichard } // namespace no_padding_on_32bit
2289a1d03eSRichard 
2389a1d03eSRichard namespace inner_padding {
2489a1d03eSRichard struct S {
2589a1d03eSRichard   char x;
2689a1d03eSRichard   int y;
2789a1d03eSRichard };
test()2889a1d03eSRichard void test() {
2989a1d03eSRichard   S a, b;
3089a1d03eSRichard   std::memcmp(&a, &b, sizeof(S));
31*15f3cd6bSMatheus Izvekov   // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: comparing object representation of type 'S' which does not have a unique object representation; consider comparing the members of the object manually
3289a1d03eSRichard }
3389a1d03eSRichard } // namespace inner_padding
34