static std::string computeDataLayout(const Triple &TT) {
return "ELVM-e-m:e-p:32:32-i32:32-n32-S32";
}
ELVM- というプレフィックスは勝手拡張で、 IsELVM というグローバル変数をセットして、そこらじゅうで適当なことを適当にやる
unsigned DataLayout::inBytes(unsigned Bits) {
if (Bits % 8)
report_fatal_error("number of bits must be a byte width multiple");
if (IsELVM)
return (Bits + 31) / 32;
return Bits / 8;
}
LLVM は 1byte == 8bit を想定しているのでこういう勝手拡張が必要