From aec3e1894ee750f59a387d006a68377e26f45d16 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 10 Apr 2002 03:52:22 +0000 Subject: [PATCH] * gcc.c-torture/execute/loop-12.c: New. From-SVN: r52111 --- gcc/testsuite/ChangeLog | 4 +++ gcc/testsuite/gcc.c-torture/execute/loop-12.c | 25 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/execute/loop-12.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ca526053f66..fae1c9bdd05 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-04-10 Alan Modra + + * gcc.c-torture/execute/loop-12.c: New. + 2002-04-08 Hans-Peter Nilsson * g77.f-torture/execute/980628-4.x, diff --git a/gcc/testsuite/gcc.c-torture/execute/loop-12.c b/gcc/testsuite/gcc.c-torture/execute/loop-12.c new file mode 100644 index 00000000000..1e340990cdd --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/loop-12.c @@ -0,0 +1,25 @@ +/* Checks that pure functions are not treated as const. */ + +char *p; + +static int __attribute__ ((pure)) +is_end_of_statement (void) +{ + return *p == '\n' || *p == ';' || *p == '!'; +} + +void foo (void) +{ + /* The is_end_of_statement call was moved out of the loop at one stage, + resulting in an endless loop. */ + while (!is_end_of_statement ()) + p++; +} + +int +main (void) +{ + p = "abc\n"; + foo (); + return 0; +} -- 2.30.2