From 01f18fcec23247aeeda8c0961d1ecac67a424894 Mon Sep 17 00:00:00 2001 From: ghazi Date: Tue, 7 Nov 2000 22:13:58 +0000 Subject: [PATCH] * gcc.c-torture/execute/string-opt-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37301 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 4 +++ gcc/testsuite/gcc.c-torture/execute/string-opt-1.c | 38 ++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/execute/string-opt-1.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8b2a8725ba0..540d2b9b517 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2000-11-07 Kaveh R. Ghazi + + * gcc.c-torture/execute/string-opt-1.c: New test. + 2000-11-07 Jeffrey Oldham * gcc.c-torture/execute/va-arg-15.x: New file. Fails on diff --git a/gcc/testsuite/gcc.c-torture/execute/string-opt-1.c b/gcc/testsuite/gcc.c-torture/execute/string-opt-1.c new file mode 100644 index 00000000000..e78f328aad1 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/string-opt-1.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2000 Free Software Foundation. + + Ensure all expected transformations of builtin strstr occur and + perform correctly. + + Written by Kaveh R. Ghazi, 11/6/2000. */ + +extern void abort(void); +extern char *strstr (const char *, const char *); + +int main() +{ + const char *const foo = "hello world"; + + if (strstr (foo, "") != foo) + abort(); + if (strstr (foo + 4, "") != foo + 4) + abort(); + if (strstr (foo, "h") != foo) + abort(); + if (strstr (foo, "w") != foo + 6) + abort(); + if (strstr (foo + 6, "o") != foo + 7) + abort(); + + return 0; +} + +#ifdef __OPTIMIZE__ +/* When optimizing, all the above cases should be transformed into + something else. So any remaining calls to the original function + should abort. */ +char * +strstr(const char *s1, const char *s2) +{ + abort(); +} +#endif -- 2.11.4.GIT