From: Oleg Endo Date: Mon, 21 Sep 2015 01:43:50 +0000 (+0000) Subject: re PR tree-optimization/59478 (Optimize variable access via byte copy) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1383eae791fc8ac120e0e79d878713fcdd4af653;p=gcc.git re PR tree-optimization/59478 (Optimize variable access via byte copy) gcc/testsuite/ PR target/59478 * gcc.target/sh/pr59478.c: New. From-SVN: r227958 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 752bac6be3b..5abe438528e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-09-21 Oleg Endo + + PR target/59478 + * gcc.target/sh/pr59478.c: New. + 2015-09-21 Oleg Endo PR target/67126 diff --git a/gcc/testsuite/gcc.target/sh/pr59478.c b/gcc/testsuite/gcc.target/sh/pr59478.c new file mode 100644 index 00000000000..f2de9e8dc95 --- /dev/null +++ b/gcc/testsuite/gcc.target/sh/pr59478.c @@ -0,0 +1,49 @@ +/* Verify that the fmac insn is used for the standard fmaf function. */ +/* { dg-do compile { target { any_fpu } } } */ +/* { dg-options "-O2" } */ +/* { dg-final { scan-assembler-times "fpul" 8 } } */ +/* { dg-final { scan-assembler-times "\tflds\tfr" 2 } } */ +/* { dg-final { scan-assembler-times "\tsts\tfpul" 2 } } */ +/* { dg-final { scan-assembler-times "\tlds\tr" 2 } } */ +/* { dg-final { scan-assembler-times "\tfsts\tfpul" 2 } } */ +/* { dg-final { scan-assembler-not "mov" } } */ + +int +test_00 (float val) +{ + char valbytes[sizeof (float)]; + __builtin_memcpy (valbytes, &val, sizeof (float)); + + int result; + __builtin_memcpy (&result, valbytes, sizeof (int)); + + return result; +} + +float +test_01 (int val) +{ + char valbytes[sizeof (int)]; + __builtin_memcpy (valbytes, &val, sizeof (int)); + + float result; + __builtin_memcpy (&result, valbytes, sizeof (float)); + + return result; +} + +int +test_02 (float val) +{ + union { int i; float f; } tmp; + tmp.f = val; + return tmp.i; +} + +float +test_03 (int val) +{ + union { int i; float f; } tmp; + tmp.i = val; + return tmp.f; +}