OSDN Git Service

2010-05-31 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 31 May 2010 11:01:32 +0000 (11:01 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 31 May 2010 11:01:32 +0000 (11:01 +0000)
* tree-ssa-structalias.c (find_func_aliases): Handle
BUILT_IN_RETURN.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160067 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-ssa-structalias.c

index f21ba34..48206e5 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-31  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-structalias.c (find_func_aliases): Handle
+       BUILT_IN_RETURN.
+
 2010-05-30  Jan Hubicka  <jh@suse.cz>
 
        * predict.c (maybe_hot_edge_p): Calls to functions called once is cold.
index a851ef2..d70b36c 100644 (file)
@@ -4241,6 +4241,26 @@ find_func_aliases (gimple origt)
          /* va_end doesn't have any effect that matters.  */
          case BUILT_IN_VA_END:
            return;
+         /* Alternate return.  Simply give up for now.  */
+         case BUILT_IN_RETURN:
+           {
+             fi = NULL;
+             if (!in_ipa_mode
+                 || !(fi = get_vi_for_tree (cfun->decl)))
+               make_constraint_from (get_varinfo (escaped_id), anything_id);
+             else if (in_ipa_mode
+                      && fi != NULL)
+               {
+                 struct constraint_expr lhs, rhs;
+                 lhs = get_function_part_constraint (fi, fi_result);
+                 rhs.var = anything_id;
+                 rhs.offset = 0;
+                 rhs.type = SCALAR;
+                 get_constraint_for (gimple_return_retval (t), &rhsc);
+                 process_constraint (new_constraint (lhs, rhs));
+               }
+             return;
+           }
          /* printf-style functions may have hooks to set pointers to
             point to somewhere into the generated string.  Leave them
             for a later excercise...  */