brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 2bd4218 Raw
24 lines · cpp
1// RUN: %clang_cc1 -std=c++17 -fsyntax-only -verify %s -verify=expected,not-cxx202// RUN: %clang_cc1 -std=c++20 -fsyntax-only -Wno-deprecated-array-compare -verify %s -verify=expected,not-cxx203// RUN: %clang_cc1 -std=c++20 -fsyntax-only -Wdeprecated -verify %s -verify=expected,cxx204// RUN: %clang_cc1 -std=c++26 -fsyntax-only -Wdeprecated -verify %s -verify=expected,cxx265 6typedef struct {7  char str[16];8  int id[16];9} Object;10 11bool object_equal(const Object &obj1, const Object &obj2) {12  if (obj1.str != obj2.str) // not-cxx20-warning {{comparison between two arrays compare their addresses}} cxx20-warning {{comparison between two arrays is deprecated}}13    return false;           // cxx26-error@-1 {{comparison between two arrays is ill-formed in C++26}}14  if (obj1.id != obj2.id) // not-cxx20-warning {{comparison between two arrays compare their addresses}} cxx20-warning {{comparison between two arrays is deprecated}}15    return false;         // cxx26-error@-1 {{comparison between two arrays is ill-formed in C++26}}16  return true;17}18 19 20void foo(int (&array1)[2], int (&array2)[2]) {21  if (array1 == array2) { } // not-cxx20-warning {{comparison between two arrays compare their addresses}} cxx20-warning {{comparison between two arrays is deprecated}}22                            // cxx26-error@-1 {{comparison between two arrays is ill-formed in C++26}}23}24