]> granicus.if.org Git - clang/commitdiff
implement a fixme
authorChris Lattner <sabre@nondot.org>
Sun, 26 Aug 2007 22:47:40 +0000 (22:47 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 26 Aug 2007 22:47:40 +0000 (22:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41466 91177308-0d34-0410-b5e6-96231b3b80d8

CodeGen/CGExprComplex.cpp

index 5aa6b974931bcbe669aab0e254088a5f80b5015d..6e7996a051ec2ae4bb3f0080ce22e36c9488d9f6 100644 (file)
@@ -16,6 +16,7 @@
 #include "clang/AST/AST.h"
 #include "llvm/Constants.h"
 #include "llvm/Function.h"
+#include "llvm/ADT/SmallString.h"
 #include "llvm/Support/Compiler.h"
 using namespace clang;
 using namespace CodeGen;
@@ -184,13 +185,21 @@ ComplexPairTy ComplexExprEmitter::EmitLoadOfComplex(llvm::Value *SrcPtr,
                                                     bool isVolatile) {
   llvm::Constant *Zero = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0);
   llvm::Constant *One  = llvm::ConstantInt::get(llvm::Type::Int32Ty, 1);
-  // FIXME: It would be nice to make this "Ptr->getName()+realp"
-  llvm::Value *RealPtr = Builder.CreateGEP(SrcPtr, Zero, Zero, "realp");
-  llvm::Value *ImagPtr = Builder.CreateGEP(SrcPtr, Zero, One, "imagp");
   
-  // FIXME: It would be nice to make this "Ptr->getName()+real"
-  llvm::Value *Real = Builder.CreateLoad(RealPtr, isVolatile, "real");
-  llvm::Value *Imag = Builder.CreateLoad(ImagPtr, isVolatile, "imag");
+  llvm::SmallString<64> Name(SrcPtr->getNameStart(),
+                             SrcPtr->getNameStart()+SrcPtr->getNameLen());
+  
+  Name += ".realp";
+  llvm::Value *RealPtr = Builder.CreateGEP(SrcPtr, Zero, Zero, Name.c_str());
+
+  Name.pop_back();  // .realp -> .real
+  llvm::Value *Real = Builder.CreateLoad(RealPtr, isVolatile, Name.c_str());
+  
+  Name.resize(Name.size()-4); // .real -> .imagp
+  Name += "imagp";
+  llvm::Value *ImagPtr = Builder.CreateGEP(SrcPtr, Zero, One, Name.c_str());
+  Name.pop_back();  // .imagp -> .imag
+  llvm::Value *Imag = Builder.CreateLoad(ImagPtr, isVolatile, Name.c_str());
   return ComplexPairTy(Real, Imag);
 }