diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-21 08:07:25 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-21 08:07:25 +0000 |
commit | 313b27fa315d8a75223e17af9bc7d17ce79398ad (patch) | |
tree | 3711b274afdafc286d6a6ed6aef58424b13479b0 | |
parent | 25b160f758362ad6545783a991bfb65a594bb5d4 (diff) |
PR optimization/8613
* builtins.c (expand_builtin): Emit postincrements before expanding
builtin functions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63207 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/builtins.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20030221-1.c | 17 |
4 files changed, 30 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5fafbeb7f6e..4890e7b2c11 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-02-21 Glen Nakamura <glen@imodulo.com> + + PR optimization/8613 + * builtins.c (expand_builtin): Emit postincrements before expanding + builtin functions. + 2003-02-21 Ben Elliston <bje@redhat.com> PR other/5634 diff --git a/gcc/builtins.c b/gcc/builtins.c index cdb9bb25c19..25ae873e141 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -4012,6 +4012,9 @@ expand_builtin (exp, target, subtarget, mode, ignore) tree arglist = TREE_OPERAND (exp, 1); enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl); + /* Perform postincrements before expanding builtin functions. */ + emit_queue (); + if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_MD) return (*targetm.expand_builtin) (exp, target, subtarget, mode, ignore); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 603ae101b5d..08d3785a0a6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-02-21 Glen Nakamura <glen@imodulo.com> + + * gcc.c-torture/execute/20030221-1.c: New test. + 2003-02-20 Mark Mitchell <mark@codesourcery.com> PR c++/9729 diff --git a/gcc/testsuite/gcc.c-torture/execute/20030221-1.c b/gcc/testsuite/gcc.c-torture/execute/20030221-1.c new file mode 100644 index 00000000000..9dcee3e2338 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/20030221-1.c @@ -0,0 +1,17 @@ +/* PR optimization/8613 */ +/* Contributed by Glen Nakamura */ + +extern void abort (void); + +int main (void) +{ + char buf[16] = "1234567890"; + char *p = buf; + + *p++ = (char) __builtin_strlen (buf); + + if ((buf[0] != 10) || (p - buf != 1)) + abort (); + + return 0; +} |