From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 129189 invoked by alias); 13 Mar 2015 02:08:43 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 129179 invoked by uid 89); 13 Mar 2015 02:08:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=1.3 required=5.0 tests=AWL,BAYES_00,SPF_PASS,T_RP_MATCHES_RCVD,URIBL_BLACK autolearn=no version=3.3.2 X-HELO: lgemrelse7q.lge.com Received: from LGEMRELSE7Q.lge.com (HELO lgemrelse7q.lge.com) (156.147.1.151) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 13 Mar 2015 02:08:40 +0000 Received: from unknown (HELO ls3.156.147.135.180) (10.186.119.203) by 156.147.1.151 with ESMTP; 13 Mar 2015 11:08:10 +0900 X-Original-SENDERIP: 10.186.119.203 X-Original-MAILFROM: hong.gyu.kim@lge.com From: Honggyu Kim To: gcc-patches@gcc.gnu.org Cc: Honggyu Kim Subject: [PATCH][ARM] New testcase to check parameter passing bug Date: Fri, 13 Mar 2015 02:08:00 -0000 Message-Id: <1426212518-14867-1-git-send-email-hong.gyu.kim@lge.com> X-IsSubscribed: yes X-SW-Source: 2015-03/txt/msg00704.txt.bz2 Hi, I have wrote a testcase that reproduces argument overwriting bug during arm code generation. I wrote this testcase with the help of Mikael Pettersson. If some format is not proper to run in gcc testsuite framework, please correct me. Please refer to the following bugzilla link for details: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65358 Honggyu --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/arm/pr65358.c | 34 ++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 gcc/testsuite/gcc.target/arm/pr65358.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5302dbd..9acd12a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-03-13 Honggyu Kim + + PR target/65235 + * gcc.target/arm/pr65358.c: New test for sibcall argument passing bug. + 2015-03-12 Kyrylo Tkachov PR rtl-optimization/65235 diff --git a/gcc/testsuite/gcc.target/arm/pr65358.c b/gcc/testsuite/gcc.target/arm/pr65358.c new file mode 100644 index 0000000..d663dcf --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr65358.c @@ -0,0 +1,34 @@ +/* PR target/65358 */ +/* { dg-do compile { target arm*-*-* } } */ +/* { dg-options "-O2" } */ + +struct pack +{ + int fine; + int victim; + int killer; +}; + +int __attribute__ ((__noinline__, __noclone__)) +bar (int a, int b, struct pack p) +{ + if (a != 20 || b != 30) + __builtin_abort (); + if (p.fine != 40 || p.victim != 50 || p.killer != 60) + __builtin_abort (); + return 0; +} + +int __attribute__ ((__noinline__, __noclone__)) +foo (int arg1, int arg2, int arg3, struct pack p) +{ + return bar (arg2, arg3, p); +} + +int main (void) +{ + struct pack p = { 40, 50, 60 }; + + (void) foo (10, 20, 30, p); + return 0; +} -- 1.7.9.5