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 を想定しているのでこういう勝手拡張が必要