Bug 22307 - Missing tests for actual library functions
Summary: Missing tests for actual library functions
Status: RESOLVED WONTFIX
Alias: None
Product: gcc
Classification: Unclassified
Component: libfortran (show other bugs)
Version: 4.1.0
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-07-05 08:41 UTC by Thomas Koenig
Modified: 2007-09-21 19:55 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2005-12-28 06:22:22


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Koenig 2005-07-05 08:41:33 UTC
For a number of library functions, the current
tests only check what the compiler does.

Look at this:

$ cat ishft.f90
! { dg-do run }
! verifies basic functioning of the ishft and ishftc intrinsics
if (ishft (1_1, 0) /= 1) call abort
if (ishft (1_1, 1) /= 2) call abort
if (ishft (3_1, 1) /= 6) call abort
if (ishft (-1_1, 1) /= -2) call abort
if (ishft (-1_1, -1) /= 127) call abort
if (ishft (96_1, 2) /= -128) call abort

if (ishft (1_2, 0) /= 1) call abort
if (ishft (1_2, 1) /= 2) call abort
if (ishft (3_2, 1) /= 6) call abort
if (ishft (-1_2, 1) /= -2) call abort
if (ishft (-1_2, -1) /= 32767) call abort
if (ishft (16384_2 + 8192_2, 2) /= -32768_4) call abort

if (ishft (1_4, 0) /= 1) call abort
if (ishft (1_4, 1) /= 2) call abort
if (ishft (3_4, 1) /= 6) call abort
if (ishft (-1_4, 1) /= -2) call abort
if (ishft (-1_4, -1) /= 2147483647) call abort
if (ishft (1073741824_4 + 536870912_4, 2) /= -2147483648_8) call abort

if (ishft (1_8, 0) /= 1) call abort
if (ishft (1_8, 1) /= 2) call abort
if (ishft (3_8, 1) /= 6) call abort
if (ishft (-1_8, 1) /= -2) call abort
if (ishft (-1_8, -60) /= z'F') call abort

if (ishftc (1_1, 0) /= 1) call abort
if (ishftc (1_1, 1) /= 2) call abort
if (ishftc (3_1, 1) /= 6) call abort
if (ishftc (-1_1, 1) /= -1) call abort
if (ishftc (-1_1, -1) /= -1) call abort
if (ishftc (ishftc (96_1, 2), -2) /= 96) call abort

if (ishftc (1_2, 0) /= 1) call abort
if (ishftc (1_2, 1) /= 2) call abort
if (ishftc (3_2, 1) /= 6) call abort
if (ishftc (-1_2, 1) /= -1) call abort
if (ishftc (-1_2, -1) /= -1) call abort
if (ishftc (ishftc (25000_2, 2), -2) /= 25000) call abort

if (ishftc (1_4, 0) /= 1) call abort
if (ishftc (1_4, 1) /= 2) call abort
if (ishftc (3_4, 1) /= 6) call abort
if (ishftc (-1_4, 1) /= -1) call abort
if (ishftc (-1_4, -1) /= -1) call abort
if (ishftc (ishftc (1325876_4, 2), -2) /= 1325876) call abort

if (ishftc (1_8, 0) /= 1) call abort
if (ishftc (1_8, 1) /= 2) call abort
if (ishftc (3_8, 1) /= 6) call abort
if (ishftc (-1_8, 1) /= -1) call abort
if (ishftc (-1_8, -1) /= -1) call abort
if (ishftc (ishftc (1325876_8, 2), -2) /= 1325876) call abort
end


$ gfortran -fdump-tree-original ishft.f90
$ cat ishft.f90.t02.original
MAIN__ ()
{
  (void) 0;


$ gfortran -v
Using built-in specs.
Target: ia64-unknown-linux-gnu
Configured with: ../gcc-4.1-20050702/configure --prefix=/home/zfkts --enable-
languages=c,f95
Thread model: posix
gcc version 4.1.0 20050702 (experimental)

We need more test cases that really test the library calls.  Chances
are there may be a few more bugs out there like PR 22142 (which was
also hidden by this).
Comment 1 Andrew Pinski 2005-07-05 13:13:44 UTC
Confirmed, what about using temporary variables which should solve this problem.  This does not look 
that critical.
Comment 2 Francois-Xavier Coudert 2007-09-21 19:55:39 UTC
Closing, as we probably want one testsuite (in gcc/testsuite) rather than adding a separate library testsuite. (http://gcc.gnu.org/ml/fortran/2007-09/msg00234.html)