[llvm-commits] [llvm-gcc-4.2] r47266 - /llvm-gcc-4.2/trunk/gcc/llvm-types.cpp

Owen Anderson resistor at mac.com
Mon Feb 18 01:32:36 PST 2008


Author: resistor
Date: Mon Feb 18 03:32:29 2008
New Revision: 47266

URL: http://llvm.org/viewvc/llvm-project?rev=47266&view=rev
Log:
llvm-gcc ensures (by inserting extra alloca's and memcpy's) that all sret parameters are noalias as well.
By properly marking this as such, we can enable sret return slot optimization in GVN.

Modified:
    llvm-gcc-4.2/trunk/gcc/llvm-types.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=47266&r1=47265&r2=47266&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Mon Feb 18 03:32:29 2008
@@ -1054,10 +1054,11 @@
     Attrs.push_back(ParamAttrsWithIndex::get(0, RAttributes));
 
   // If this is a struct-return function, the dest loc is passed in as a
-  // pointer.  Mark that pointer as structret.
+  // pointer.  Mark that pointer as structret and noalias.
   if (ABIConverter.isStructReturn())
     Attrs.push_back(ParamAttrsWithIndex::get(ArgTys.size(),
-                                             ParamAttr::StructRet));
+                                    ParamAttr::StructRet | ParamAttr::NoAlias));
+  
   if (static_chain) {
     // Pass the static chain as the first parameter.
     ABIConverter.HandleArgument(TREE_TYPE(static_chain));
@@ -1152,10 +1153,10 @@
     Attrs.push_back(ParamAttrsWithIndex::get(0, RAttributes));
   
   // If this is a struct-return function, the dest loc is passed in as a
-  // pointer.  Mark that pointer as structret.
+  // pointer.  Mark that pointer as structret, and noalias.
   if (ABIConverter.isStructReturn())
     Attrs.push_back(ParamAttrsWithIndex::get(ArgTypes.size(),
-                                             ParamAttr::StructRet));
+                                    ParamAttr::StructRet | ParamAttr::NoAlias));
     
   if (static_chain) {
     // Pass the static chain as the first parameter.





More information about the llvm-commits mailing list