Fznamznon created this revision. Herald added a project: All. Fznamznon requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
`ConvertTypeForMem` doesn't return wider type for _BitInt unless it is used in a bitfield, so no need to extend when trying to initialize a global variable. Fixes https://github.com/llvm/llvm-project/issues/62207 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D149436 Files: clang/docs/ReleaseNotes.rst clang/lib/CodeGen/CGExprConstant.cpp clang/test/CodeGen/ext-int.c Index: clang/test/CodeGen/ext-int.c =================================================================== --- clang/test/CodeGen/ext-int.c +++ clang/test/CodeGen/ext-int.c @@ -3,6 +3,10 @@ // RUN: %clang_cc1 -triple i386-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,LIN32 // RUN: %clang_cc1 -triple i386-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,WIN32 +//GH62207 +unsigned _BitInt(1) GlobSize1 = 0; +// CHECK: @GlobSize1 = {{.*}}global i1 false + void GenericTest(_BitInt(3) a, unsigned _BitInt(3) b, _BitInt(4) c) { // CHECK: define {{.*}}void @GenericTest int which = _Generic(a, _BitInt(3): 1, unsigned _BitInt(3) : 2, _BitInt(4) : 3); Index: clang/lib/CodeGen/CGExprConstant.cpp =================================================================== --- clang/lib/CodeGen/CGExprConstant.cpp +++ clang/lib/CodeGen/CGExprConstant.cpp @@ -1730,7 +1730,7 @@ } // Zero-extend bool. - if (C->getType()->isIntegerTy(1)) { + if (C->getType()->isIntegerTy(1) && !destType->isBitIntType()) { llvm::Type *boolTy = CGM.getTypes().ConvertTypeForMem(destType); return llvm::ConstantExpr::getZExt(C, boolTy); } Index: clang/docs/ReleaseNotes.rst =================================================================== --- clang/docs/ReleaseNotes.rst +++ clang/docs/ReleaseNotes.rst @@ -336,6 +336,9 @@ - Fix crash when attempting to perform parenthesized initialization of an aggregate with a base class with only non-public constructors. (`#62296 <https://github.com/llvm/llvm-project/issues/62296>`_) +- Fix the assertion hit when generating code for global variable initializer of + _BitInt(1) type. + (`#62207 <https://github.com/llvm/llvm-project/issues/62207>`_) Bug Fixes to Compiler Builtins ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Index: clang/test/CodeGen/ext-int.c =================================================================== --- clang/test/CodeGen/ext-int.c +++ clang/test/CodeGen/ext-int.c @@ -3,6 +3,10 @@ // RUN: %clang_cc1 -triple i386-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,LIN32 // RUN: %clang_cc1 -triple i386-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,WIN32 +//GH62207 +unsigned _BitInt(1) GlobSize1 = 0; +// CHECK: @GlobSize1 = {{.*}}global i1 false + void GenericTest(_BitInt(3) a, unsigned _BitInt(3) b, _BitInt(4) c) { // CHECK: define {{.*}}void @GenericTest int which = _Generic(a, _BitInt(3): 1, unsigned _BitInt(3) : 2, _BitInt(4) : 3); Index: clang/lib/CodeGen/CGExprConstant.cpp =================================================================== --- clang/lib/CodeGen/CGExprConstant.cpp +++ clang/lib/CodeGen/CGExprConstant.cpp @@ -1730,7 +1730,7 @@ } // Zero-extend bool. - if (C->getType()->isIntegerTy(1)) { + if (C->getType()->isIntegerTy(1) && !destType->isBitIntType()) { llvm::Type *boolTy = CGM.getTypes().ConvertTypeForMem(destType); return llvm::ConstantExpr::getZExt(C, boolTy); } Index: clang/docs/ReleaseNotes.rst =================================================================== --- clang/docs/ReleaseNotes.rst +++ clang/docs/ReleaseNotes.rst @@ -336,6 +336,9 @@ - Fix crash when attempting to perform parenthesized initialization of an aggregate with a base class with only non-public constructors. (`#62296 <https://github.com/llvm/llvm-project/issues/62296>`_) +- Fix the assertion hit when generating code for global variable initializer of + _BitInt(1) type. + (`#62207 <https://github.com/llvm/llvm-project/issues/62207>`_) Bug Fixes to Compiler Builtins ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits