brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · c05c296 Raw
32 lines · c
1// RUN: clang-reorder-fields -record-name Foo -fields-order z,w,y,x %s -- | FileCheck %s2 3struct Foo {4  const int* x; // CHECK:      {{^  double z;}}5  int y;        // CHECK-NEXT: {{^  int w;}}6  double z;     // CHECK-NEXT: {{^  int y;}}7  int w;        // CHECK-NEXT: {{^  const int\* x}}8};9 10struct Bar {11  char a;12  struct Foo b;13  char c;14};15 16int main() {17  const int x = 13;18  struct Foo foo1 = { .x=&x, .y=0, .z=1.29, .w=17 }; // CHECK: {{^ struct Foo foo1 = { .z = 1.29, .w = 17, .y = 0, .x = &x };}}19  struct Foo foo2 = { .x=&x, 0, 1.29, 17 };          // CHECK: {{^ struct Foo foo2 = { .z = 1.29, .w = 17, .y = 0, .x = &x };}}20  struct Foo foo3 = { .y=0, .z=1.29, 17, .x=&x };    // CHECK: {{^ struct Foo foo3 = { .z = 1.29, .w = 17, .y = 0, .x = &x };}}21  struct Foo foo4 = { .y=0, .z=1.29, 17 };           // CHECK: {{^ struct Foo foo4 = { .z = 1.29, .w = 17, .y = 0 };}}22 23  struct Foo foos1[1] = { [0] = {.x=&x, 0, 1.29, 17} };              // CHECK: {{^ struct Foo foos1\[1] = { \[0] = {.z = 1.29, .w = 17, .y = 0, .x = &x} };}}24  struct Foo foos2[1] = { [0].x=&x, [0].y=0, [0].z=1.29, [0].w=17 }; // CHECK: {{^ struct Foo foos2\[1] = { \[0].z = 1.29, \[0].w = 17, \[0].y = 0, \[0].x = &x };}}25  struct Foo foos3[1] = { &x, 0, 1.29, 17 };                         // CHECK: {{^ struct Foo foos3\[1] = { \[0].z = 1.29, \[0].w = 17, \[0].y = 0, \[0].x = &x };}}26  struct Foo foos4[2] = { &x, 0, 1.29, 17, &x, 0, 1.29, 17 };        // CHECK: {{^ struct Foo foos4\[2] = { \[0].z = 1.29, \[0].w = 17, \[0].y = 0, \[0].x = &x, \[1].z = 1.29, \[1].w = 17, \[1].y = 0, \[1].x = &x };}}27 28  struct Bar bar1 = { .a='a', &x, 0, 1.29, 17, 'c' }; // CHECK: {{^ struct Bar bar1 = { .a = 'a', .b.z = 1.29, .b.w = 17, .b.y = 0, .b.x = &x, .c = 'c' };}}29 30  return 0;31}32