diff options
author | Richard Guenther <rguenther@suse.de> | 2010-05-31 11:01:32 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-05-31 11:01:32 +0000 |
commit | a4c9bc1594bef333dc17be8d37625356e8b8c476 (patch) | |
tree | 711d4b253a8788575f9ceb2e718e1baf693159a1 /gcc/tree-ssa-structalias.c | |
parent | 178b70cce7b8540651b7f7fdf3f934b46a7ed6ea (diff) | |
download | gcc-a4c9bc1594bef333dc17be8d37625356e8b8c476.zip gcc-a4c9bc1594bef333dc17be8d37625356e8b8c476.tar.gz gcc-a4c9bc1594bef333dc17be8d37625356e8b8c476.tar.bz2 |
tree-ssa-structalias.c (find_func_aliases): Handle BUILT_IN_RETURN.
2010-05-31 Richard Guenther <rguenther@suse.de>
* tree-ssa-structalias.c (find_func_aliases): Handle
BUILT_IN_RETURN.
From-SVN: r160067
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r-- | gcc/tree-ssa-structalias.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index a851ef2e..d70b36c 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -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... */ |