[llvm-commits] [gcc-plugin] r83629 - in /gcc-plugin/trunk: llvm-convert.cpp llvm-internal.h

Duncan Sands baldrick at free.fr
Fri Oct 9 03:23:04 PDT 2009


Author: baldrick
Date: Fri Oct  9 05:23:04 2009
New Revision: 83629

URL: http://llvm.org/viewvc/llvm-project?rev=83629&view=rev
Log:
We may may want an SSA_NAME as an lvalue for the purpose of loading it out.
For example, to do bit_field_ref on an ssa name (this is an rvalue) we need
to store the ssa name to a temporary then load out the right slice of it.

Modified:
    gcc-plugin/trunk/llvm-convert.cpp
    gcc-plugin/trunk/llvm-internal.h

Modified: gcc-plugin/trunk/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/gcc-plugin/trunk/llvm-convert.cpp?rev=83629&r1=83628&r2=83629&view=diff

==============================================================================
--- gcc-plugin/trunk/llvm-convert.cpp (original)
+++ gcc-plugin/trunk/llvm-convert.cpp Fri Oct  9 05:23:04 2009
@@ -1220,6 +1220,9 @@
   case IMAGPART_EXPR:
     LV = EmitLV_XXXXPART_EXPR(exp, 1);
     break;
+  case SSA_NAME:
+    LV = EmitLV_SSA_NAME(exp);
+    break;
 
   // Constants.
   case LABEL_DECL: {
@@ -6228,6 +6231,7 @@
                      PointerType::getUnqual(ConvertType(TREE_TYPE(exp))));
     return LV;
   } else {
+    // TODO: Check the VCE is being used as an rvalue, see EmitLoadOfLValue.
     // If the input is a scalar, emit to a temporary.
     Value *Dest = CreateTemporary(ConvertType(TREE_TYPE(Op)));
     Builder.CreateStore(Emit(Op, 0), Dest);
@@ -6258,6 +6262,13 @@
   return LValue(Builder.CreateStructGEP(Ptr.Ptr, Idx), Alignment);
 }
 
+LValue TreeToLLVM::EmitLV_SSA_NAME(tree exp) {
+  // TODO: Check the ssa name is being used as an rvalue, see EmitLoadOfLValue.
+  Value *Temp = CreateTemporary(ConvertType(TREE_TYPE(exp)));
+  Builder.CreateStore(EmitSSA_NAME(exp), Temp);
+  return LValue(Temp, 1);
+}
+
 
 //===----------------------------------------------------------------------===//
 //                      ... Convert GIMPLE to LLVM ...

Modified: gcc-plugin/trunk/llvm-internal.h
URL: http://llvm.org/viewvc/llvm-project/gcc-plugin/trunk/llvm-internal.h?rev=83629&r1=83628&r2=83629&view=diff

==============================================================================
--- gcc-plugin/trunk/llvm-internal.h (original)
+++ gcc-plugin/trunk/llvm-internal.h Fri Oct  9 05:23:04 2009
@@ -713,6 +713,7 @@
   LValue EmitLV_VIEW_CONVERT_EXPR(tree_node *exp);
   LValue EmitLV_WITH_SIZE_EXPR(tree_node *exp);
   LValue EmitLV_XXXXPART_EXPR(tree_node *exp, unsigned Idx);
+  LValue EmitLV_SSA_NAME(tree_node *exp);
 
   // Constant Expressions.
   Value *EmitINTEGER_CST(tree_node *exp);





More information about the llvm-commits mailing list