As the repro included shows:
A := 90.0;
B := 30.0 * -Sin(A);
fails with a missing operand compile-time error, but:
A := 90.0;
B := -Sin(A);
B := 30 * B;
works.
with Ada.Numerics.Elementary_Functions;
use Ada.Numerics.Elementary_Functions;
procedure X is
A : float;
B : float;
begin
A := 90.0;
-- This works.
B := -Sin(A);
B := B * 30.0;
-- This produces a compile-time error: x.adb:15:14: missing operand
B := 30.0 * -Sin(A);
end;
--
Summary: missing operand: 90.0 * -Sin(A)
Product: gcc
Version: 3.3.3
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dave at synergy dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i586-suse-linux
GCC host triplet: i586-suse-linux
GCC target triplet: i586-suse-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19539