================ @@ -535,20 +535,23 @@ void AggExprEmitter::EmitArrayInit(Address DestPtr, llvm::ArrayType *AType, elementType.isTriviallyCopyableType(CGF.getContext())) { CodeGen::CodeGenModule &CGM = CGF.CGM; ConstantEmitter Emitter(CGF); - LangAS AS = ArrayQTy.getAddressSpace(); + QualType GVArrayQTy = CGM.getContext().getAddrSpaceQualType( + CGM.getContext().removeAddrSpaceQualType(ArrayQTy), ---------------- changpeng wrote:
We saw a regression caused by this PR. It is a soft hang in CGM.getContext().removeAddrSpaceQualType. Specifically it is in the following while loop: while (T.hasAddressSpace()) { TypeNode = Quals.strip(T); // If the type no longer has an address space after stripping qualifiers, // jump out. if (!QualType(TypeNode, 0).hasAddressSpace()) break; // There might be sugar in the way. Strip it and try again. T = T.getSingleStepDesugaredType(*this); } We found that "T == T.getSingleStepDesugaredType(*this);" and this it could not proceed. I am not sure whether we should break out this loop when "T == T.getSingleStepDesugaredType(*this)" or something else is wrong that we should never see such case. Here is the dump of T: ConstantArrayType 0x555565b40640 '__private ulong[16]' 16 `-QualType 0x555565b403f8 '__private ulong' __private `-ElaboratedType 0x555565b3ff40 'ulong' sugar imported `-TypedefType 0x555565b3fef0 'ulong' sugar imported |-Typedef 0x555565b3fe80 'ulong' `-BuiltinType 0x55556583f430 'unsigned long' https://github.com/llvm/llvm-project/pull/90048 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits