diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -2170,11 +2170,6 @@ continue; } - if (Field == FieldEnd) { - // We've run out of fields. We're done. - break; - } - // Check if this is an initializer of forms: // // struct foo f = {}; @@ -2204,6 +2199,11 @@ break; } + if (Field == FieldEnd) { + // We've run out of fields. We're done. + break; + } + // We've already initialized a member of a union. We're done. if (InitializedSomething && DeclType->isUnionType()) break; diff --git a/clang/test/Sema/init-randomized-struct.c b/clang/test/Sema/init-randomized-struct.c --- a/clang/test/Sema/init-randomized-struct.c +++ b/clang/test/Sema/init-randomized-struct.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -triple=x86_64-unknown-linux -frandomize-layout-seed=1234567890abcdef \ +// RUN: %clang_cc1 -triple=x86_64-unknown-linux -frandomize-layout-seed=1234567890abcded \ // RUN: -verify -fsyntax-only -Werror %s // Initializing a randomized structure requires a designated initializer,