From 79d6ba8f3d27a04365c149f362860ae0e9cc4268 Mon Sep 17 00:00:00 2001 From: sandra Date: Wed, 21 May 2014 14:45:36 +0000 Subject: [PATCH] 2014-05-21 Cesar Philippidis Sandra Loosemore PR lto/60179 gcc/testsuite/ * lib/scanasm.exp (scan-lto-assembler): New procedure. * gcc.target/nios2/custom-fp-lto.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210714 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 7 +++++++ gcc/testsuite/gcc.target/nios2/custom-fp-lto.c | 29 ++++++++++++++++++++++++++ gcc/testsuite/lib/scanasm.exp | 10 +++++++++ 3 files changed, 46 insertions(+) create mode 100644 gcc/testsuite/gcc.target/nios2/custom-fp-lto.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fb1e068..6fe22f6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-05-21 Cesar Philippidis + Sandra Loosemore + + PR lto/60179 + * lib/scanasm.exp (scan-lto-assembler): New procedure. + * gcc.target/nios2/custom-fp-lto.c: New test. + 2014-05-21 Andreas Schwab * g++.dg/cpp0x/pr61038.C (operator "" _s): Use size_t. diff --git a/gcc/testsuite/gcc.target/nios2/custom-fp-lto.c b/gcc/testsuite/gcc.target/nios2/custom-fp-lto.c new file mode 100644 index 0000000..c7c04ff --- /dev/null +++ b/gcc/testsuite/gcc.target/nios2/custom-fp-lto.c @@ -0,0 +1,29 @@ +/* Test specification of custom instructions via pragma in the presence + of LTO. This test case formerly failed due to PR60179. */ + +/* { dg-do link } */ +/* { dg-require-effective-target lto } */ +/* { dg-options "-O1 -flto -flto-partition=one -save-temps" } */ + +/* -O1 in the options is significant. Without it FP operations may not be + optimized to custom instructions. */ + +#include +#include + +#pragma GCC target ("custom-fabss=224") + +float +custom_fp (float operand_a) +{ + return fabsf (operand_a); +} + +int +main (int argc, char *argv[]) +{ + return custom_fp ((float)argc) > 1.0; +} + +/* { dg-final { scan-lto-assembler "custom\\t224, " } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp index 6e3e9d8..e382b3d 100644 --- a/gcc/testsuite/lib/scanasm.exp +++ b/gcc/testsuite/lib/scanasm.exp @@ -500,3 +500,13 @@ proc dg-function-on-line { args } { append final-code "$cmd\n" } + +# Look for a pattern in the .exe.ltrans0.s file produced by the +# compiler. See dg-scan for details. + +proc scan-lto-assembler { args } { + set testcase [testname-for-summary] + set output_file "[file rootname [file tail $testcase]].exe.ltrans0.s" + verbose "output_file: $output_file" + dg-scan "scan-assembler" 1 $testcase $output_file $args +} -- 2.7.4