From 5ec2242e4e4bf0f3937ca4929e9a5d4d2b9a9eec Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Sun, 13 May 2007 13:54:25 +0000 Subject: [PATCH] file demonstrating a control flow optimisation bug [r13831] --- ir/be/test/cfoptbug.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 ir/be/test/cfoptbug.c diff --git a/ir/be/test/cfoptbug.c b/ir/be/test/cfoptbug.c new file mode 100644 index 000000000..7d5a35dff --- /dev/null +++ b/ir/be/test/cfoptbug.c @@ -0,0 +1,43 @@ +#include +#include + +struct list { + struct list *next; + int val; +}; + +struct list l = { NULL, 5 }; +struct list *sptr = &l; +struct list l2 = { NULL, 42 }; +struct list *sptr2 = &l2; + +struct list *test(int n) +{ + struct list *ptr1; + struct list *ptr2; + int sum = 0; + + if(n == 0) { + ptr1 = sptr; + } else { + ptr1 = sptr2; + } + + for(ptr2 = ptr1; ptr2 != NULL; ptr2 = ptr2->next) { + sum += ptr2->val; + } + printf("Sum: %d\n", sum); + + return ptr1; +} + +int main(int argc, char **argv) +{ + struct list *ptr1 = test(0); + struct list *ptr2 = test(1); + + assert(ptr1 == sptr); + assert(ptr2 == sptr2); + + return 0; +} -- 2.20.1