https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64182
Bug ID: 64182 Summary: [5 Regression] wide-int rounding division is broken Product: gcc Version: 5.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org CC: rsandifo at gcc dot gnu.org Testcase for gnat.dg/round_div.adb -- { dg-do run } -- { dg-options "-O3" } procedure Round_Div is type Fixed is delta 1.0 range -2147483648.0 .. 2147483647.0; A : Fixed := 1.0; B : Fixed := 3.0; C : Integer; function Divide (X, Y : Fixed) return Integer is begin return Integer (X / Y); end; begin C := Divide (A, B); if C /= 0 then raise Program_Error; end if; end Round_Div; Joseph pointed out round_mod_expr has the same issue.