--- /dev/null
+-- { dg-do run }
+
+procedure Nan_Max is
+
+ function NaN return Long_Float is
+ Zero : Long_Float := 0.0;
+ begin
+ return Zero / Zero;
+ end;
+
+ Z : Long_Float := 1.0;
+ N : Long_Float := NaN;
+
+begin
+ if Long_Float'Max (N, Z) /= Z then
+ raise Program_Error;
+ end if;
+
+ if Long_Float'Max (Z, N) /= Z then
+ raise Program_Error;
+ end if;
+
+ if Long_Float'Max (NaN, Z) /= Z then
+ raise Program_Error;
+ end if;
+
+ if Long_Float'Max (Z, NaN) /= Z then
+ raise Program_Error;
+ end if;
+end;