Index: lld/trunk/wasm/OutputSegment.h =================================================================== --- lld/trunk/wasm/OutputSegment.h +++ lld/trunk/wasm/OutputSegment.h @@ -26,7 +26,7 @@ void addInputSegment(InputSegment *InSeg) { Alignment = std::max(Alignment, InSeg->getAlignment()); InputSegments.push_back(InSeg); - Size = llvm::alignTo(Size, 1 << InSeg->getAlignment()); + Size = llvm::alignTo(Size, 1ULL << InSeg->getAlignment()); InSeg->OutputSeg = this; InSeg->OutputSegmentOffset = Size; Size += InSeg->getSize(); Index: lld/trunk/wasm/Writer.cpp =================================================================== --- lld/trunk/wasm/Writer.cpp +++ lld/trunk/wasm/Writer.cpp @@ -733,7 +733,7 @@ MemAlign = 0; for (OutputSegment *Seg : Segments) { MemAlign = std::max(MemAlign, Seg->Alignment); - MemoryPtr = alignTo(MemoryPtr, 1 << Seg->Alignment); + MemoryPtr = alignTo(MemoryPtr, 1ULL << Seg->Alignment); Seg->StartVA = MemoryPtr; log(formatv("mem: {0,-15} offset={1,-8} size={2,-8} align={3}", Seg->Name, MemoryPtr, Seg->Size, Seg->Alignment));