]> granicus.if.org Git - clang/commitdiff
Use toCharUnitsFromBits instead of TargetInfo::getCharWidth
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 31 Oct 2016 16:48:30 +0000 (16:48 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 31 Oct 2016 16:48:30 +0000 (16:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@285595 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGBuiltin.cpp

index 54566aa7e519885e4e7db866bb6d55e854974d33..4728aadf7333a168e20d6bfb0802500feec33e73 100644 (file)
@@ -1142,7 +1142,9 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
     const TargetInfo &TI = getContext().getTargetInfo();
     // The alignment of the alloca should correspond to __BIGGEST_ALIGNMENT__.
     unsigned SuitableAlignmentInBytes =
-        TI.getSuitableAlign() / TI.getCharWidth();
+        CGM.getContext()
+            .toCharUnitsFromBits(TI.getSuitableAlign())
+            .getQuantity();
     AllocaInst *AI = Builder.CreateAlloca(Builder.getInt8Ty(), Size);
     AI->setAlignment(SuitableAlignmentInBytes);
     return RValue::get(AI);
@@ -1150,11 +1152,11 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
 
   case Builtin::BI__builtin_alloca_with_align: {
     Value *Size = EmitScalarExpr(E->getArg(0));
-    Value *AlignmentValue = EmitScalarExpr(E->getArg(1));
-    auto *AlignmentCI = cast<ConstantInt>(AlignmentValue);
-    unsigned Alignment = AlignmentCI->getZExtValue();
-    const TargetInfo &TI = getContext().getTargetInfo();
-    unsigned AlignmentInBytes = Alignment / TI.getCharWidth();
+    Value *AlignmentInBitsValue = EmitScalarExpr(E->getArg(1));
+    auto *AlignmentInBitsCI = cast<ConstantInt>(AlignmentInBitsValue);
+    unsigned AlignmentInBits = AlignmentInBitsCI->getZExtValue();
+    unsigned AlignmentInBytes =
+        CGM.getContext().toCharUnitsFromBits(AlignmentInBits).getQuantity();
     AllocaInst *AI = Builder.CreateAlloca(Builder.getInt8Ty(), Size);
     AI->setAlignment(AlignmentInBytes);
     return RValue::get(AI);