aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/CppBackend/CPPBackend.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-12-13 14:08:10 -0800
committerAlon Zakai <alonzakai@gmail.com>2013-12-13 14:08:10 -0800
commit5e088a0259ccde4f5ffa511d1a1d8d1913dd6c16 (patch)
treed8a9865790f2a2136927bab28f11f33e204b65e0 /lib/Target/CppBackend/CPPBackend.cpp
parentc26dff697a002a67a4a546719671cc14e76e52a0 (diff)
fix pointer type cast
Diffstat (limited to 'lib/Target/CppBackend/CPPBackend.cpp')
-rw-r--r--lib/Target/CppBackend/CPPBackend.cpp28
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();
}
}