/// Return the datalayout string of a subtarget. static std::string getDataLayoutString(const PPCSubtarget &ST) { const Triple &T = ST.getTargetTriple(); std::string Ret; // Most PPC* platforms are big endian, PPC64LE is little endian. if (ST.isLittleEndian()) Ret = "e"; else Ret = "E"; Ret += DataLayout::getManglingComponent(T); // PPC32 has 32 bit pointers. The PS3 (OS Lv2) is a PPC64 machine with 32 bit // pointers. if (!ST.isPPC64() || T.getOS() == Triple::Lv2) Ret += "-p:32:32"; // Note, the alignment values for f64 and i64 on ppc64 in Darwin // documentation are wrong; these are correct (i.e. "what gcc does"). if (ST.isPPC64() || ST.isSVR4ABI()) Ret += "-i64:64"; else Ret += "-f64:32:64"; // PPC64 has 32 and 64 bit registers, PPC32 has only 32 bit ones. if (ST.isPPC64()) Ret += "-n32:64"; else Ret += "-n32"; return Ret; }
PPCJITInfo::PPCJITInfo(PPCSubtarget &STI) : Subtarget(STI), is64Bit(STI.isPPC64()) { useGOT = 0; }