diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-12-13 14:08:10 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-12-13 14:08:10 -0800 |
commit | 5e088a0259ccde4f5ffa511d1a1d8d1913dd6c16 (patch) | |
tree | d8a9865790f2a2136927bab28f11f33e204b65e0 /lib/Target/CppBackend/CPPBackend.cpp | |
parent | c26dff697a002a67a4a546719671cc14e76e52a0 (diff) |
fix pointer type cast
Diffstat (limited to 'lib/Target/CppBackend/CPPBackend.cpp')
-rw-r--r-- | lib/Target/CppBackend/CPPBackend.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/lib/Target/CppBackend/CPPBackend.cpp b/lib/Target/CppBackend/CPPBackend.cpp index 4ff08e4531..bc58c97d70 100644 --- a/lib/Target/CppBackend/CPPBackend.cpp +++ b/lib/Target/CppBackend/CPPBackend.cpp @@ -950,26 +950,20 @@ std::string CppWriter::getAssign(const StringRef &s, const Type *t) { std::string CppWriter::getCast(const StringRef &s, const Type *t, AsmCast sign) { switch (t->getTypeID()) { - default: - assert(false && "Unsupported type"); - case Type::FloatTyID: - // TODO return ("Math_fround(" + s + ")").str(); - case Type::DoubleTyID: - return ("+" + s).str(); - case Type::IntegerTyID: - case Type::PointerTyID: + default: assert(false && "Unsupported type"); + case Type::FloatTyID: // TODO return ("Math_fround(" + s + ")").str(); + case Type::DoubleTyID: return ("+" + s).str(); + case Type::IntegerTyID: { // fall through to the end for nonspecific switch (t->getIntegerBitWidth()) { - case 1: - if (sign != ASM_NONSPECIFIC) return (s + "&1").str(); - case 8: - if (sign != ASM_NONSPECIFIC) return (s + "&255").str(); - case 16: - if (sign != ASM_NONSPECIFIC) return (s + "&65535").str(); - case 32: - default: - return (sign == ASM_SIGNED || sign == ASM_NONSPECIFIC ? s + "|0" : s + ">>>0").str(); + case 1: if (sign != ASM_NONSPECIFIC) return (s + "&1").str(); + case 8: if (sign != ASM_NONSPECIFIC) return (s + "&255").str(); + case 16: if (sign != ASM_NONSPECIFIC) return (s + "&65535").str(); + case 32: return (sign == ASM_SIGNED || sign == ASM_NONSPECIFIC ? s + "|0" : s + ">>>0").str(); + default: assert(0); } + } + case Type::PointerTyID: return (s + "|0").str(); } } |