diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-10-31 18:15:40 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-10-31 18:15:40 +0000 |
commit | 29a753913cdef01ec6d8100eb0cea4933da9f21a (patch) | |
tree | a0fad22476c6b71855e4e022da5369a844414a66 /gcc/ada/s-vaflop-vms-alpha.adb | |
parent | 41c0403d88a5418a13913179453f9cb89b15ef7e (diff) | |
download | gcc-29a753913cdef01ec6d8100eb0cea4933da9f21a.tar.gz |
2006-10-31 Robert Dewar <dewar@adacore.com>
* s-osinte-tru64.adb:
Mark Asm statements Volatile to prevent warnings (seems a
reasonable change anyway)
Fixes new warnings
* s-mastop-irix.adb: Add Volatile to Asm statements
Suppresses warning, and seems appropriate in any case
* s-osinte-vms.adb: Add Volatile to Asm statement
* s-vaflop-vms-alpha.adb: Add Volatile to Asm statements
* exp_code.ads, exp_code.adb (Asm_Input_Value): Note that Error can be
returned.
Add call to Check_Code_Statement
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118329 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/s-vaflop-vms-alpha.adb')
-rw-r--r-- | gcc/ada/s-vaflop-vms-alpha.adb | 212 |
1 files changed, 141 insertions, 71 deletions
diff --git a/gcc/ada/s-vaflop-vms-alpha.adb b/gcc/ada/s-vaflop-vms-alpha.adb index 92e62734ee7..e7d561bed16 100644 --- a/gcc/ada/s-vaflop-vms-alpha.adb +++ b/gcc/ada/s-vaflop-vms-alpha.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1997-2005, Free Software Foundation, Inc. -- +-- Copyright (C) 1997-2006, Free Software Foundation, Inc. -- -- (Version for Alpha OpenVMS) -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- @@ -69,9 +69,12 @@ package body System.Vax_Float_Operations is A, B : T; C : G; begin - Asm ("ldg %0,%1", T'Asm_Output ("=f", A), D'Asm_Input ("m", X)); - Asm ("cvtdg %1,%0", T'Asm_Output ("=f", B), T'Asm_Input ("f", A)); - Asm ("stg %1,%0", G'Asm_Output ("=m", C), T'Asm_Input ("f", B)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", A), D'Asm_Input ("m", X), + Volatile => True); + Asm ("cvtdg %1,%0", T'Asm_Output ("=f", B), T'Asm_Input ("f", A), + Volatile => True); + Asm ("stg %1,%0", G'Asm_Output ("=m", C), T'Asm_Input ("f", B), + Volatile => True); return C; end D_To_G; @@ -83,8 +86,10 @@ package body System.Vax_Float_Operations is A : T; B : G; begin - Asm ("ldf %0,%1", T'Asm_Output ("=f", A), F'Asm_Input ("m", X)); - Asm ("stg %1,%0", G'Asm_Output ("=m", B), T'Asm_Input ("f", A)); + Asm ("ldf %0,%1", T'Asm_Output ("=f", A), F'Asm_Input ("m", X), + Volatile => True); + Asm ("stg %1,%0", G'Asm_Output ("=m", B), T'Asm_Input ("f", A), + Volatile => True); return B; end F_To_G; @@ -100,7 +105,8 @@ package body System.Vax_Float_Operations is -- Because converting to a wider FP format is a no-op, we say -- A is 64-bit even though we are loading 32 bits into it. - Asm ("ldf %0,%1", T'Asm_Output ("=f", A), F'Asm_Input ("m", X)); + Asm ("ldf %0,%1", T'Asm_Output ("=f", A), F'Asm_Input ("m", X), + Volatile => True); B := S (Cvt_G_T (A)); return B; @@ -114,9 +120,12 @@ package body System.Vax_Float_Operations is A, B : T; C : D; begin - Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X)); - Asm ("cvtgd %1,%0", T'Asm_Output ("=f", B), T'Asm_Input ("f", A)); - Asm ("stg %1,%0", D'Asm_Output ("=m", C), T'Asm_Input ("f", B)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X), + Volatile => True); + Asm ("cvtgd %1,%0", T'Asm_Output ("=f", B), T'Asm_Input ("f", A), + Volatile => True); + Asm ("stg %1,%0", D'Asm_Output ("=m", C), T'Asm_Input ("f", B), + Volatile => True); return C; end G_To_D; @@ -129,9 +138,12 @@ package body System.Vax_Float_Operations is B : S; C : F; begin - Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X)); - Asm ("cvtgf %1,%0", S'Asm_Output ("=f", B), T'Asm_Input ("f", A)); - Asm ("stf %1,%0", F'Asm_Output ("=m", C), S'Asm_Input ("f", B)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X), + Volatile => True); + Asm ("cvtgf %1,%0", S'Asm_Output ("=f", B), T'Asm_Input ("f", A), + Volatile => True); + Asm ("stf %1,%0", F'Asm_Output ("=m", C), S'Asm_Input ("f", B), + Volatile => True); return C; end G_To_F; @@ -143,8 +155,10 @@ package body System.Vax_Float_Operations is A : T; B : Q; begin - Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X)); - Asm ("cvtgq %1,%0", Q'Asm_Output ("=f", B), T'Asm_Input ("f", A)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X), + Volatile => True); + Asm ("cvtgq %1,%0", Q'Asm_Output ("=f", B), T'Asm_Input ("f", A), + Volatile => True); return B; end G_To_Q; @@ -155,7 +169,8 @@ package body System.Vax_Float_Operations is function G_To_T (X : G) return T is A, B : T; begin - Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X), + Volatile => True); B := Cvt_G_T (A); return B; end G_To_T; @@ -177,8 +192,10 @@ package body System.Vax_Float_Operations is A : S; B : F; begin - Asm ("cvtqf %1,%0", S'Asm_Output ("=f", A), Q'Asm_Input ("f", X)); - Asm ("stf %1,%0", F'Asm_Output ("=m", B), S'Asm_Input ("f", A)); + Asm ("cvtqf %1,%0", S'Asm_Output ("=f", A), Q'Asm_Input ("f", X), + Volatile => True); + Asm ("stf %1,%0", F'Asm_Output ("=m", B), S'Asm_Input ("f", A), + Volatile => True); return B; end Q_To_F; @@ -190,8 +207,10 @@ package body System.Vax_Float_Operations is A : T; B : G; begin - Asm ("cvtqg %1,%0", T'Asm_Output ("=f", A), Q'Asm_Input ("f", X)); - Asm ("stg %1,%0", G'Asm_Output ("=m", B), T'Asm_Input ("f", A)); + Asm ("cvtqg %1,%0", T'Asm_Output ("=f", A), Q'Asm_Input ("f", X), + Volatile => True); + Asm ("stg %1,%0", G'Asm_Output ("=m", B), T'Asm_Input ("f", A), + Volatile => True); return B; end Q_To_G; @@ -204,7 +223,8 @@ package body System.Vax_Float_Operations is B : F; begin A := Cvt_T_F (T (X)); - Asm ("stf %1,%0", F'Asm_Output ("=m", B), S'Asm_Input ("f", A)); + Asm ("stf %1,%0", F'Asm_Output ("=m", B), S'Asm_Input ("f", A), + Volatile => True); return B; end S_To_F; @@ -226,7 +246,8 @@ package body System.Vax_Float_Operations is B : G; begin A := Cvt_T_G (X); - Asm ("stg %1,%0", G'Asm_Output ("=m", B), T'Asm_Input ("f", A)); + Asm ("stg %1,%0", G'Asm_Output ("=m", B), T'Asm_Input ("f", A), + Volatile => True); return B; end T_To_G; @@ -238,9 +259,12 @@ package body System.Vax_Float_Operations is A, B : S; C : F; begin - Asm ("ldf %0,%1", S'Asm_Output ("=f", A), F'Asm_Input ("m", X)); - Asm ("cpys $f31,%1,%0", S'Asm_Output ("=f", B), S'Asm_Input ("f", A)); - Asm ("stf %1,%0", F'Asm_Output ("=m", C), S'Asm_Input ("f", B)); + Asm ("ldf %0,%1", S'Asm_Output ("=f", A), F'Asm_Input ("m", X), + Volatile => True); + Asm ("cpys $f31,%1,%0", S'Asm_Output ("=f", B), S'Asm_Input ("f", A), + Volatile => True); + Asm ("stf %1,%0", F'Asm_Output ("=m", C), S'Asm_Input ("f", B), + Volatile => True); return C; end Abs_F; @@ -253,8 +277,10 @@ package body System.Vax_Float_Operations is C : G; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X)); - Asm ("cpys $f31,%1,%0", T'Asm_Output ("=f", B), T'Asm_Input ("f", A)); - Asm ("stg %1,%0", G'Asm_Output ("=m", C), T'Asm_Input ("f", B)); + Asm ("cpys $f31,%1,%0", T'Asm_Output ("=f", B), T'Asm_Input ("f", A), + Volatile => True); + Asm ("stg %1,%0", G'Asm_Output ("=m", C), T'Asm_Input ("f", B), + Volatile => True); return C; end Abs_G; @@ -267,10 +293,13 @@ package body System.Vax_Float_Operations is R1 : F; begin Asm ("ldf %0,%1", S'Asm_Output ("=f", X1), F'Asm_Input ("m", X)); - Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y)); + Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y), + Volatile => True); Asm ("addf %1,%2,%0", S'Asm_Output ("=f", R), - (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1))); - Asm ("stf %1,%0", F'Asm_Output ("=m", R1), S'Asm_Input ("f", R)); + (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1)), + Volatile => True); + Asm ("stf %1,%0", F'Asm_Output ("=m", R1), S'Asm_Input ("f", R), + Volatile => True); return R1; end Add_F; @@ -283,10 +312,13 @@ package body System.Vax_Float_Operations is R1 : G; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", X1), G'Asm_Input ("m", X)); - Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y), + Volatile => True); Asm ("addg %1,%2,%0", T'Asm_Output ("=f", R), - (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1))); - Asm ("stg %1,%0", G'Asm_Output ("=m", R1), T'Asm_Input ("f", R)); + (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1)), + Volatile => True); + Asm ("stg %1,%0", G'Asm_Output ("=m", R1), T'Asm_Input ("f", R), + Volatile => True); return R1; end Add_G; @@ -362,10 +394,13 @@ package body System.Vax_Float_Operations is R1 : F; begin Asm ("ldf %0,%1", S'Asm_Output ("=f", X1), F'Asm_Input ("m", X)); - Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y)); + Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y), + Volatile => True); Asm ("divf %1,%2,%0", S'Asm_Output ("=f", R), - (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1))); - Asm ("stf %1,%0", F'Asm_Output ("=m", R1), S'Asm_Input ("f", R)); + (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1)), + Volatile => True); + Asm ("stf %1,%0", F'Asm_Output ("=m", R1), S'Asm_Input ("f", R), + Volatile => True); return R1; end Div_F; @@ -378,10 +413,13 @@ package body System.Vax_Float_Operations is R1 : G; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", X1), G'Asm_Input ("m", X)); - Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y), + Volatile => True); Asm ("divg %1,%2,%0", T'Asm_Output ("=f", R), - (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1))); - Asm ("stg %1,%0", G'Asm_Output ("=m", R1), T'Asm_Input ("f", R)); + (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1)), + Volatile => True); + Asm ("stg %1,%0", G'Asm_Output ("=m", R1), T'Asm_Input ("f", R), + Volatile => True); return R1; end Div_G; @@ -393,9 +431,11 @@ package body System.Vax_Float_Operations is X1, Y1, R : S; begin Asm ("ldf %0,%1", S'Asm_Output ("=f", X1), F'Asm_Input ("m", X)); - Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y)); + Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y), + Volatile => True); Asm ("cmpgeq %1,%2,%0", S'Asm_Output ("=f", R), - (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1))); + (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1)), + Volatile => True); return R /= 0.0; end Eq_F; @@ -407,9 +447,11 @@ package body System.Vax_Float_Operations is X1, Y1, R : T; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", X1), G'Asm_Input ("m", X)); - Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y), + Volatile => True); Asm ("cmpgeq %1,%2,%0", T'Asm_Output ("=f", R), - (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1))); + (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1)), + Volatile => True); return R /= 0.0; end Eq_G; @@ -421,9 +463,11 @@ package body System.Vax_Float_Operations is X1, Y1, R : S; begin Asm ("ldf %0,%1", S'Asm_Output ("=f", X1), F'Asm_Input ("m", X)); - Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y)); + Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y), + Volatile => True); Asm ("cmpgle %1,%2,%0", S'Asm_Output ("=f", R), - (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1))); + (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1)), + Volatile => True); return R /= 0.0; end Le_F; @@ -435,9 +479,11 @@ package body System.Vax_Float_Operations is X1, Y1, R : T; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", X1), G'Asm_Input ("m", X)); - Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y), + Volatile => True); Asm ("cmpgle %1,%2,%0", T'Asm_Output ("=f", R), - (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1))); + (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1)), + Volatile => True); return R /= 0.0; end Le_G; @@ -449,9 +495,11 @@ package body System.Vax_Float_Operations is X1, Y1, R : S; begin Asm ("ldf %0,%1", S'Asm_Output ("=f", X1), F'Asm_Input ("m", X)); - Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y)); + Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y), + Volatile => True); Asm ("cmpglt %1,%2,%0", S'Asm_Output ("=f", R), - (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1))); + (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1)), + Volatile => True); return R /= 0.0; end Lt_F; @@ -463,9 +511,11 @@ package body System.Vax_Float_Operations is X1, Y1, R : T; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", X1), G'Asm_Input ("m", X)); - Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y), + Volatile => True); Asm ("cmpglt %1,%2,%0", T'Asm_Output ("=f", R), - (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1))); + (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1)), + Volatile => True); return R /= 0.0; end Lt_G; @@ -478,10 +528,13 @@ package body System.Vax_Float_Operations is R1 : F; begin Asm ("ldf %0,%1", S'Asm_Output ("=f", X1), F'Asm_Input ("m", X)); - Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y)); + Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y), + Volatile => True); Asm ("mulf %1,%2,%0", S'Asm_Output ("=f", R), - (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1))); - Asm ("stf %1,%0", F'Asm_Output ("=m", R1), S'Asm_Input ("f", R)); + (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1)), + Volatile => True); + Asm ("stf %1,%0", F'Asm_Output ("=m", R1), S'Asm_Input ("f", R), + Volatile => True); return R1; end Mul_F; @@ -494,10 +547,13 @@ package body System.Vax_Float_Operations is R1 : G; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", X1), G'Asm_Input ("m", X)); - Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y), + Volatile => True); Asm ("mulg %1,%2,%0", T'Asm_Output ("=f", R), - (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1))); - Asm ("stg %1,%0", G'Asm_Output ("=m", R1), T'Asm_Input ("f", R)); + (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1)), + Volatile => True); + Asm ("stg %1,%0", G'Asm_Output ("=m", R1), T'Asm_Input ("f", R), + Volatile => True); return R1; end Mul_G; @@ -509,9 +565,11 @@ package body System.Vax_Float_Operations is X1, Y1, R : S; begin Asm ("ldf %0,%1", S'Asm_Output ("=f", X1), F'Asm_Input ("m", X)); - Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y)); + Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y), + Volatile => True); Asm ("cmpgeq %1,%2,%0", S'Asm_Output ("=f", R), - (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1))); + (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1)), + Volatile => True); return R = 0.0; end Ne_F; @@ -523,9 +581,11 @@ package body System.Vax_Float_Operations is X1, Y1, R : T; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", X1), G'Asm_Input ("m", X)); - Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y), + Volatile => True); Asm ("cmpgeq %1,%2,%0", T'Asm_Output ("=f", R), - (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1))); + (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1)), + Volatile => True); return R = 0.0; end Ne_G; @@ -538,8 +598,10 @@ package body System.Vax_Float_Operations is C : F; begin Asm ("ldf %0,%1", S'Asm_Output ("=f", A), F'Asm_Input ("m", X)); - Asm ("cpysn %1,%1,%0", S'Asm_Output ("=f", B), S'Asm_Input ("f", A)); - Asm ("stf %1,%0", F'Asm_Output ("=m", C), S'Asm_Input ("f", B)); + Asm ("cpysn %1,%1,%0", S'Asm_Output ("=f", B), S'Asm_Input ("f", A), + Volatile => True); + Asm ("stf %1,%0", F'Asm_Output ("=m", C), S'Asm_Input ("f", B), + Volatile => True); return C; end Neg_F; @@ -552,8 +614,10 @@ package body System.Vax_Float_Operations is C : G; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", A), G'Asm_Input ("m", X)); - Asm ("cpysn %1,%1,%0", T'Asm_Output ("=f", B), T'Asm_Input ("f", A)); - Asm ("stg %1,%0", G'Asm_Output ("=m", C), T'Asm_Input ("f", B)); + Asm ("cpysn %1,%1,%0", T'Asm_Output ("=f", B), T'Asm_Input ("f", A), + Volatile => True); + Asm ("stg %1,%0", G'Asm_Output ("=m", C), T'Asm_Input ("f", B), + Volatile => True); return C; end Neg_G; @@ -594,10 +658,13 @@ package body System.Vax_Float_Operations is begin Asm ("ldf %0,%1", S'Asm_Output ("=f", X1), F'Asm_Input ("m", X)); - Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y)); + Asm ("ldf %0,%1", S'Asm_Output ("=f", Y1), F'Asm_Input ("m", Y), + Volatile => True); Asm ("subf %1,%2,%0", S'Asm_Output ("=f", R), - (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1))); - Asm ("stf %1,%0", F'Asm_Output ("=m", R1), S'Asm_Input ("f", R)); + (S'Asm_Input ("f", X1), S'Asm_Input ("f", Y1)), + Volatile => True); + Asm ("stf %1,%0", F'Asm_Output ("=m", R1), S'Asm_Input ("f", R), + Volatile => True); return R1; end Sub_F; @@ -610,10 +677,13 @@ package body System.Vax_Float_Operations is R1 : G; begin Asm ("ldg %0,%1", T'Asm_Output ("=f", X1), G'Asm_Input ("m", X)); - Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y)); + Asm ("ldg %0,%1", T'Asm_Output ("=f", Y1), G'Asm_Input ("m", Y), + Volatile => True); Asm ("subg %1,%2,%0", T'Asm_Output ("=f", R), - (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1))); - Asm ("stg %1,%0", G'Asm_Output ("=m", R1), T'Asm_Input ("f", R)); + (T'Asm_Input ("f", X1), T'Asm_Input ("f", Y1)), + Volatile => True); + Asm ("stg %1,%0", G'Asm_Output ("=m", R1), T'Asm_Input ("f", R), + Volatile => True); return R1; end Sub_G; |