Approved. On Jul 29, 2015 10:40 AM, "Hans Wennborg" <[email protected]> wrote:
> +Richard for owner's approval. > > On Wed, Jul 29, 2015 at 10:35 AM, Argyrios Kyrtzidis <[email protected]> > wrote: > > It’s safe enough to merge. > > > >> On Jul 29, 2015, at 10:10 AM, Hans Wennborg <[email protected]> wrote: > >> > >> Should this be merged to 3.7? > >> > >> On Mon, Jul 27, 2015 at 4:16 PM, Argyrios Kyrtzidis <[email protected]> > wrote: > >>> Author: akirtzidis > >>> Date: Mon Jul 27 18:16:53 2015 > >>> New Revision: 243343 > >>> > >>> URL: http://llvm.org/viewvc/llvm-project?rev=243343&view=rev > >>> Log: > >>> [sema] Fix infinite loop when using a boolean value as designated > initializer. > >>> > >>> For designated indices use the max array size type bitwidth, not the > bitwidth of the index value itself. > >>> rdar://21942503 > >>> > >>> Added: > >>> cfe/trunk/test/CodeGenObjCXX/designated-initializers.mm > >>> Modified: > >>> cfe/trunk/lib/Sema/SemaInit.cpp > >>> > >>> Modified: cfe/trunk/lib/Sema/SemaInit.cpp > >>> URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaInit.cpp?rev=243343&r1=243342&r2=243343&view=diff > >>> > ============================================================================== > >>> --- cfe/trunk/lib/Sema/SemaInit.cpp (original) > >>> +++ cfe/trunk/lib/Sema/SemaInit.cpp Mon Jul 27 18:16:53 2015 > >>> @@ -2372,14 +2372,12 @@ InitListChecker::CheckDesignatedInitiali > >>> return true; > >>> } > >>> } else { > >>> - // Make sure the bit-widths and signedness match. > >>> - if (DesignatedStartIndex.getBitWidth() > > DesignatedEndIndex.getBitWidth()) > >>> - DesignatedEndIndex > >>> - = > DesignatedEndIndex.extend(DesignatedStartIndex.getBitWidth()); > >>> - else if (DesignatedStartIndex.getBitWidth() < > >>> - DesignatedEndIndex.getBitWidth()) > >>> - DesignatedStartIndex > >>> - = > DesignatedStartIndex.extend(DesignatedEndIndex.getBitWidth()); > >>> + unsigned DesignatedIndexBitWidth = > >>> + ConstantArrayType::getMaxSizeBits(SemaRef.Context); > >>> + DesignatedStartIndex = > >>> + DesignatedStartIndex.extOrTrunc(DesignatedIndexBitWidth); > >>> + DesignatedEndIndex = > >>> + DesignatedEndIndex.extOrTrunc(DesignatedIndexBitWidth); > >>> DesignatedStartIndex.setIsUnsigned(true); > >>> DesignatedEndIndex.setIsUnsigned(true); > >>> } > >>> > >>> Added: cfe/trunk/test/CodeGenObjCXX/designated-initializers.mm > >>> URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/designated-initializers.mm?rev=243343&view=auto > >>> > ============================================================================== > >>> --- cfe/trunk/test/CodeGenObjCXX/designated-initializers.mm (added) > >>> +++ cfe/trunk/test/CodeGenObjCXX/designated-initializers.mm Mon Jul > 27 18:16:53 2015 > >>> @@ -0,0 +1,36 @@ > >>> +// RUN: %clang_cc1 -triple arm64 %s -verify -emit-llvm -o - | > FileCheck %s > >>> +// expected-no-diagnostics > >>> + > >>> +// Make sure we don't enter an infinite loop (rdar://21942503) > >>> + > >>> +int vals1[] = { > >>> + [__objc_yes] = 1, > >>> + [__objc_no] = 2 > >>> +}; > >>> +// CHECK: @vals1 = global [2 x i32] [i32 2, i32 1] > >>> + > >>> +int vals2[] = { > >>> + [true] = 3, > >>> + [false] = 4 > >>> +}; > >>> +// CHECK: @vals2 = global [2 x i32] [i32 4, i32 3] > >>> + > >>> +int vals3[] = { > >>> + [false] = 1, > >>> + [true] = 2, > >>> + 5 > >>> +}; > >>> +// CHECK: @vals3 = global [3 x i32] [i32 1, i32 2, i32 5] > >>> + > >>> +int vals4[2] = { > >>> + [true] = 5, > >>> + [false] = 6 > >>> +}; > >>> +// CHECK: @vals4 = global [2 x i32] [i32 6, i32 5] > >>> + > >>> +int vals5[3] = { > >>> + [false] = 1, > >>> + [true] = 2, > >>> + 6 > >>> +}; > >>> +// CHECK: @vals5 = global [3 x i32] [i32 1, i32 2, i32 6] >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
