diff options
author | Kaveh R. Ghazi <ghazi@caip.rutgers.edu> | 2005-12-01 02:31:49 +0000 |
---|---|---|
committer | Kaveh Ghazi <ghazi@gcc.gnu.org> | 2005-12-01 02:31:49 +0000 |
commit | 625a34391b5f4ade156cd99b88fd5184011d2a29 (patch) | |
tree | cdcde4f7780bd6812328a85c7bcd53f7041439a5 | |
parent | 57fdce262e62bbaeb666e2c733c5f69486deb240 (diff) | |
download | gcc-625a34391b5f4ade156cd99b88fd5184011d2a29.zip gcc-625a34391b5f4ade156cd99b88fd5184011d2a29.tar.gz gcc-625a34391b5f4ade156cd99b88fd5184011d2a29.tar.bz2 |
re PR middle-end/25158 (FAIL: gcc.c-torture/execute/builtins/fprintf.c compilation)
PR middle-end/25158
* builtins.c (fold_builtin_fputs): Defer check for missing
replacement functions.
From-SVN: r107762
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/builtins.c | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1d8646a..5832c4e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-11-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + PR middle-end/25158 + * builtins.c (fold_builtin_fputs): Defer check for missing + replacement functions. + 2005-11-30 Kean Johnston <jkj@sco.com> * config/i386/i386.c: Check the value of SUPPORTS_ONE_ONLY, not diff --git a/gcc/builtins.c b/gcc/builtins.c index aff2499..2e42f46 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -9327,9 +9327,8 @@ fold_builtin_fputs (tree arglist, bool ignore, bool unlocked, tree len) tree const fn_fwrite = unlocked ? built_in_decls[BUILT_IN_FWRITE_UNLOCKED] : implicit_built_in_decls[BUILT_IN_FWRITE]; - /* If the return value is used, or the replacement _DECL isn't - initialized, don't do the transformation. */ - if (!ignore || !fn_fputc || !fn_fwrite) + /* If the return value is used, don't do the transformation. */ + if (!ignore) return 0; /* Verify the arguments in the original call. */ @@ -9391,6 +9390,11 @@ fold_builtin_fputs (tree arglist, bool ignore, bool unlocked, tree len) gcc_unreachable (); } + /* If the replacement _DECL isn't initialized, don't do the + transformation. */ + if (!fn) + return 0; + /* These optimizations are only performed when the result is ignored, hence there's no need to cast the result to integer_type_node. */ return build_function_call_expr (fn, arglist); |