summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-05-09 03:56:52 +0000
committerChris Lattner <sabre@nondot.org>2002-05-09 03:56:52 +0000
commit2fca988a57197a9c4abf1efd317a8a79f8697047 (patch)
tree59b1dea191053461ee200696ab33b98c61c7414f /llvm/lib
parentaf14c8d51f27c695f53b86c17f1c327fc0bcc043 (diff)
downloadbcm5719-llvm-2fca988a57197a9c4abf1efd317a8a79f8697047.tar.gz
bcm5719-llvm-2fca988a57197a9c4abf1efd317a8a79f8697047.zip
* Remove dead function
* Print C strings correctly * Expand C escape sequences nicely (ie \n \t, etc get generated instead of hex escapes) llvm-svn: 2572
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CWriter/Writer.cpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/llvm/lib/CWriter/Writer.cpp b/llvm/lib/CWriter/Writer.cpp
index bb5f75de3ea..630abecbd0c 100644
--- a/llvm/lib/CWriter/Writer.cpp
+++ b/llvm/lib/CWriter/Writer.cpp
@@ -72,11 +72,6 @@ static string makeNameProper(string x) {
return tmp;
}
-static string getConstantName(const Constant *CPV) {
- return CPV->getName();
-}
-
-
static std::string getConstArrayStrValue(const Constant* CPV) {
std::string Result;
@@ -94,10 +89,17 @@ static std::string getConstArrayStrValue(const Constant* CPV) {
break;
}
}
+ if (isString) {
+ // Make sure the last character is a null char, as automatically added by C
+ if (CPV->getNumOperands() == 0 ||
+ !cast<Constant>(*(CPV->op_end()-1))->isNullValue())
+ isString = false;
+ }
if (isString) {
Result = "\"";
- for (unsigned i = 0; i < CPV->getNumOperands(); ++i) {
+ // Do not include the last character, which we know is null
+ for (unsigned i = 0, e = CPV->getNumOperands()-1; i != e; ++i) {
unsigned char C = (ETy == Type::SByteTy) ?
(unsigned char)cast<ConstantSInt>(CPV->getOperand(i))->getValue() :
(unsigned char)cast<ConstantUInt>(CPV->getOperand(i))->getValue();
@@ -105,9 +107,18 @@ static std::string getConstArrayStrValue(const Constant* CPV) {
if (isprint(C)) {
Result += C;
} else {
- Result += "\\x";
- Result += ( C/16 < 10) ? ( C/16 +'0') : ( C/16 -10+'A');
- Result += ((C&15) < 10) ? ((C&15)+'0') : ((C&15)-10+'A');
+ switch (C) {
+ case '\n': Result += "\\n"; break;
+ case '\t': Result += "\\t"; break;
+ case '\r': Result += "\\r"; break;
+ case '\v': Result += "\\v"; break;
+ case '\a': Result += "\\a"; break;
+ default:
+ Result += "\\x";
+ Result += ( C/16 < 10) ? ( C/16 +'0') : ( C/16 -10+'A');
+ Result += ((C&15) < 10) ? ((C&15)+'0') : ((C&15)-10+'A');
+ break;
+ }
}
}
Result += "\"";
OpenPOWER on IntegriCloud