diff --git a/src/IceInst.cpp b/src/IceInst.cpp
index cfcaad3..43291ce 100644
--- a/src/IceInst.cpp
+++ b/src/IceInst.cpp
@@ -534,7 +534,8 @@
   dumpDest(Func);
   Str << " = alloca i8, i32 ";
   getSizeInBytes()->dump(Func);
-  Str << ", align " << getAlignInBytes();
+  if (getAlignInBytes())
+    Str << ", align " << getAlignInBytes();
 }
 
 void InstArithmetic::dump(const Cfg *Func) const {
diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp
index 756508e..c3a6e4d 100644
--- a/src/IceTargetLoweringX8632.cpp
+++ b/src/IceTargetLoweringX8632.cpp
@@ -1118,6 +1118,9 @@
   Operand *TotalSize = legalize(Inst->getSizeInBytes());
   Variable *Dest = Inst->getDest();
   uint32_t AlignmentParam = Inst->getAlignInBytes();
+  // For default align=0, set it to the real value 1, to avoid any
+  // bit-manipulation problems below.
+  AlignmentParam = std::max(AlignmentParam, 1u);
 
   // LLVM enforces power of 2 alignment.
   assert((AlignmentParam & (AlignmentParam - 1)) == 0);
diff --git a/tests_lit/llvm2ice_tests/alloc.ll b/tests_lit/llvm2ice_tests/alloc.ll
index 80bba30..d690a19 100644
--- a/tests_lit/llvm2ice_tests/alloc.ll
+++ b/tests_lit/llvm2ice_tests/alloc.ll
@@ -104,6 +104,19 @@
 ; CHECK:      mov     dword ptr [esp], eax
 ; CHECK:      call    f2
 
+; Test alloca with default (0) alignment.
+define void @align0(i32 %n) {
+entry:
+  %array = alloca i8, i32 %n
+  %__2 = ptrtoint i8* %array to i32
+  call void @f2(i32 %__2)
+  ret void
+}
+; CHECK-LABEL: align0
+; CHECK: add [[REG:.*]], 15
+; CHECK: and [[REG]], -16
+; CHECK: sub esp, [[REG]]
+
 define void @f2(i32 %ignored) {
 entry:
   ret void
