aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-08-17 02:29:00 +0000
committerChris Lattner <sabre@nondot.org>2004-08-17 02:29:00 +0000
commit505e783d8cecda3262eb5ef24326ef2e74da2ce3 (patch)
tree513f2bbf05a891be59758c6f9e1c5289b86e02fe
parented1ff01639f8c0ea63131662568c82699447b6b3 (diff)
Make sure to put an _ prefix on all identifiers!
Also, add some (currently disabled) code to print float's as 32-bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15846 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/PowerPC/PPC32AsmPrinter.cpp45
-rw-r--r--lib/Target/PowerPC/PPCAsmPrinter.cpp45
2 files changed, 58 insertions, 32 deletions
diff --git a/lib/Target/PowerPC/PPC32AsmPrinter.cpp b/lib/Target/PowerPC/PPC32AsmPrinter.cpp
index 151580c8d2..42030ff141 100644
--- a/lib/Target/PowerPC/PPC32AsmPrinter.cpp
+++ b/lib/Target/PowerPC/PPC32AsmPrinter.cpp
@@ -46,7 +46,9 @@ namespace {
std::set<std::string> Strings;
PowerPCAsmPrinter(std::ostream &O, TargetMachine &TM)
- : AsmPrinter(O, TM), LabelNumber(0) {}
+ : AsmPrinter(O, TM), LabelNumber(0) {
+ UsesUnderscorePrefix = 1;
+ }
/// Unique incrementer for label values for referencing Global values.
///
@@ -193,21 +195,32 @@ void PowerPCAsmPrinter::emitGlobalConstant(const Constant *CV) {
// FP Constants are printed as integer constants to avoid losing
// precision...
double Val = CFP->getValue();
- union DU { // Abide by C TBAA rules
- double FVal;
- uint64_t UVal;
- struct {
- uint32_t MSWord;
- uint32_t LSWord;
- } T;
- } U;
- U.FVal = Val;
-
- O << ".long\t" << U.T.MSWord << "\t; double most significant word "
- << Val << "\n";
- O << ".long\t" << U.T.LSWord << "\t; double least significant word "
- << Val << "\n";
- return;
+ if (1 || CFP->getType() == Type::DoubleTy) {
+ union DU { // Abide by C TBAA rules
+ double FVal;
+ uint64_t UVal;
+ struct {
+ uint32_t MSWord;
+ uint32_t LSWord;
+ } T;
+ } U;
+ U.FVal = Val;
+
+ O << ".long\t" << U.T.MSWord << "\t; double most significant word "
+ << Val << "\n";
+ O << ".long\t" << U.T.LSWord << "\t; double least significant word "
+ << Val << "\n";
+ return;
+ } else {
+ union FU { // Abide by C TBAA rules
+ float FVal;
+ int32_t UVal;
+ } U;
+ U.FVal = Val;
+
+ O << ".long\t" << U.UVal << "\t; float " << Val << "\n";
+ return;
+ }
} else if (CV->getType() == Type::ULongTy || CV->getType() == Type::LongTy) {
if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) {
union DU { // Abide by C TBAA rules
diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp
index 151580c8d2..42030ff141 100644
--- a/lib/Target/PowerPC/PPCAsmPrinter.cpp
+++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp
@@ -46,7 +46,9 @@ namespace {
std::set<std::string> Strings;
PowerPCAsmPrinter(std::ostream &O, TargetMachine &TM)
- : AsmPrinter(O, TM), LabelNumber(0) {}
+ : AsmPrinter(O, TM), LabelNumber(0) {
+ UsesUnderscorePrefix = 1;
+ }
/// Unique incrementer for label values for referencing Global values.
///
@@ -193,21 +195,32 @@ void PowerPCAsmPrinter::emitGlobalConstant(const Constant *CV) {
// FP Constants are printed as integer constants to avoid losing
// precision...
double Val = CFP->getValue();
- union DU { // Abide by C TBAA rules
- double FVal;
- uint64_t UVal;
- struct {
- uint32_t MSWord;
- uint32_t LSWord;
- } T;
- } U;
- U.FVal = Val;
-
- O << ".long\t" << U.T.MSWord << "\t; double most significant word "
- << Val << "\n";
- O << ".long\t" << U.T.LSWord << "\t; double least significant word "
- << Val << "\n";
- return;
+ if (1 || CFP->getType() == Type::DoubleTy) {
+ union DU { // Abide by C TBAA rules
+ double FVal;
+ uint64_t UVal;
+ struct {
+ uint32_t MSWord;
+ uint32_t LSWord;
+ } T;
+ } U;
+ U.FVal = Val;
+
+ O << ".long\t" << U.T.MSWord << "\t; double most significant word "
+ << Val << "\n";
+ O << ".long\t" << U.T.LSWord << "\t; double least significant word "
+ << Val << "\n";
+ return;
+ } else {
+ union FU { // Abide by C TBAA rules
+ float FVal;
+ int32_t UVal;
+ } U;
+ U.FVal = Val;
+
+ O << ".long\t" << U.UVal << "\t; float " << Val << "\n";
+ return;
+ }
} else if (CV->getType() == Type::ULongTy || CV->getType() == Type::LongTy) {
if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) {
union DU { // Abide by C TBAA rules