problems with single byte stores in the arm backend

I have been struggling with this for way too long now, so hopefully the mighty list can help:

I am trying to generate a byte store instruction storing the constant value 4 at some given address
in a new helper function inside ARMISelLowering.cpp

I tried:

SDValue Val = DAG.getConstant(4, MVT::i8);

SDValue Store = DAG.getStore(chain,
dl,
Val,
Addr,
MachinePointerInfo(),
false, false, 0);

This gives me a a legalizer assert for MVT::i8.

If I change it to MVT::i32 the code works but instead of
a single byte store (STRB) I get a word store (STR).

How can I force the width of the store?

Thanks,
Robert

Hi Robert,

You probably want getTruncStore() instead of getStore().

-Jim