view gcc/testsuite/gnat.dg/conv_decimal.adb @ 144:8f4e72ab4e11

fix segmentation fault caused by nothing next cur_op to end
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 21:23:56 +0900
parents 04ced10e8804
children
line wrap: on
line source

-- PR middle-end/36575
-- reporter: Laurent Guerby <laurent@guerby.net>
-- { dg-do run }

procedure Conv_Decimal is

  type Unsigned_Over_8 is mod 2**8+2;
  type Signed_Over_8 is range -200 .. 200;

  procedure Assert(Truth: Boolean) is
  begin
    if not Truth then
      raise Program_Error;
    end if;
  end;

  type Decim is delta 0.1 digits 5;

  Halfway  : Decim := 2.5;
  Neg_Half : Decim := -2.5;

  Big      : Unsigned_Over_8;
  Also_Big : Signed_Over_8;

begin
  Big := Unsigned_Over_8 (Halfway); -- Rounds up by 4.6(33).
  Assert(Big = 3);

  Also_Big := Signed_Over_8 (Halfway); -- Rounds up by 4.6(33).
  Assert(Also_Big = 3);

  Also_Big := Signed_Over_8 (Neg_Half); -- Rounds down by 4.6(33).
  Assert(Also_Big = -3);
end;