Index: llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp =================================================================== --- llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp +++ llvm/trunk/lib/Target/ARM/ARMConstantIslandPass.cpp @@ -1425,10 +1425,6 @@ assert(!isThumb || getITInstrPredicate(*MI, PredReg) == ARMCC::AL)); NewMBB = splitBlockBeforeInstr(&*MI); - - // 4 byte align the next block after the constant pool when the CPE is a - // 16-bit value in ARM mode, and 2 byte for Thumb. - NewMBB->setAlignment(isThumb ? 1 : 2); } /// handleConstantPoolUser - Analyze the specified user, checking to see if it @@ -1489,6 +1485,8 @@ // We are adding new water. Update NewWaterList. NewWaterList.insert(NewIsland); } + // Always align the new block because CP entries can be smaller than 4 bytes. + NewMBB->setAlignment(isThumb ? 1 : 2); // Remove the original WaterList entry; we want subsequent insertions in // this vicinity to go after the one we're about to insert. This Index: llvm/trunk/test/CodeGen/ARM/constant-islands-cfg.mir =================================================================== --- llvm/trunk/test/CodeGen/ARM/constant-islands-cfg.mir +++ llvm/trunk/test/CodeGen/ARM/constant-islands-cfg.mir @@ -39,7 +39,7 @@ # CHECK: successors: %[[LONG_BR_BB:bb.[0-9]+]](0x{{[0-9a-f]+}}), %[[DEST1:bb.[0-9]+]](0x{{[0-9a-f]+}}){{$}} # CHECK: tBcc %[[LONG_BR_BB]], 0, $cpsr # CHECK: tB %[[DEST1]] -# CHECK: [[LONG_BR_BB]]: +# CHECK: [[LONG_BR_BB]] (align 1): # CHECK: successors: %[[DEST2:bb.[0-9]+]](0x{{[0-9a-f]+}}){{$}} # CHECK: tB %[[DEST2]] # CHECK: [[DEST1]]: @@ -52,7 +52,7 @@ tBcc %bb.2, 1, killed $cpsr tB %bb.3, 14, $noreg - bb.1: + bb.1 (align 1): dead $r0 = SPACE 256, undef $r0 bb.2: Index: llvm/trunk/test/CodeGen/ARM/fp16-litpool-arm.mir =================================================================== --- llvm/trunk/test/CodeGen/ARM/fp16-litpool-arm.mir +++ llvm/trunk/test/CodeGen/ARM/fp16-litpool-arm.mir @@ -1,5 +1,7 @@ # RUN: llc -mtriple=arm-none-eabi -run-pass=arm-cp-islands %s -o - | FileCheck %s - +# +# This checks alignment of a new block when a big basic block is split up. +# --- | ; ModuleID = '' source_filename = "" Index: llvm/trunk/test/CodeGen/ARM/fp16-litpool-thumb.mir =================================================================== --- llvm/trunk/test/CodeGen/ARM/fp16-litpool-thumb.mir +++ llvm/trunk/test/CodeGen/ARM/fp16-litpool-thumb.mir @@ -1,4 +1,7 @@ # RUN: llc -mtriple=thumbv7-none-eabi -run-pass=arm-cp-islands %s -o - | FileCheck %s +# +# This checks alignment of a new block when a big basic block is split up. +# --- | ; ModuleID = '' source_filename = ""