@@ -591,26 +591,17 @@ static void EmitAtomicOp(CodeGenFunction &CGF, AtomicExpr *E, Address Dest,
591591 Load->setAtomic (Order, Scope);
592592 Load->setVolatile (E->isVolatile ());
593593
594- if (CGF.CGM .getCodeGenOpts ().OptimizationLevel == 0 ) {
595- CGF.Builder .CreateStore (Load, Dest);
596- return ;
597- }
598-
599594 QualType Ty = E->getValueType ();
600- if (!Ty->isBooleanType ()) {
601- CGF.Builder .CreateStore (Load, Dest);
602- return ;
603- }
604-
605- llvm::MDBuilder MDHelper (CGF.getLLVMContext ());
606- llvm::APInt BooleanMin = llvm::APInt (CGF.getContext ().getTypeSize (Ty), 0 );
607- llvm::APInt BooleanEnd = llvm::APInt (CGF.getContext ().getTypeSize (Ty), 2 );
608-
609- if (llvm::MDNode *RangeInfo =
610- MDHelper.createRange (BooleanMin, BooleanEnd)) {
611- Load->setMetadata (llvm::LLVMContext::MD_range, RangeInfo);
612- Load->setMetadata (llvm::LLVMContext::MD_noundef,
613- llvm::MDNode::get (CGF.getLLVMContext (), {}));
595+ if (CGF.CGM .getCodeGenOpts ().OptimizationLevel > 0 && Ty->isBooleanType ()) {
596+ llvm::MDBuilder MDHelper (CGF.getLLVMContext ());
597+ llvm::APInt BooleanMin = llvm::APInt (CGF.getContext ().getTypeSize (Ty), 0 );
598+ llvm::APInt BooleanEnd = llvm::APInt (CGF.getContext ().getTypeSize (Ty), 2 );
599+ if (llvm::MDNode *RangeInfo =
600+ MDHelper.createRange (BooleanMin, BooleanEnd)) {
601+ Load->setMetadata (llvm::LLVMContext::MD_range, RangeInfo);
602+ Load->setMetadata (llvm::LLVMContext::MD_noundef,
603+ llvm::MDNode::get (CGF.getLLVMContext (), {}));
604+ }
614605 }
615606
616607 CGF.Builder .CreateStore (Load, Dest);
0 commit comments