aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-loop-distribution.c
diff options
context:
space:
mode:
authorHristian Kirtchev <kirtchev@adacore.com>2018-05-25 09:05:15 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-05-25 09:05:15 +0000
commitbf5899e71ea7ca1cc3ae9007c2d5e06ee4108d2a (patch)
tree5839a309bf58d480c43a1065d5ddf6721c4c94ac /gcc/tree-loop-distribution.c
parentf70b01165e6d392a110cb963060ea2a17feebbb7 (diff)
downloadgcc-bf5899e71ea7ca1cc3ae9007c2d5e06ee4108d2a.zip
gcc-bf5899e71ea7ca1cc3ae9007c2d5e06ee4108d2a.tar.gz
gcc-bf5899e71ea7ca1cc3ae9007c2d5e06ee4108d2a.tar.bz2
[Ada] Spurious range check with Initialize_Scalars
This patch modifies the expansion of default-initialized array objects when pragma Initialize_Scalars or Normalize_Scalars is in effect to suppress the generation of checks on the constructed in-place aggregate. The aggregate intentionally contains invalid values which may not necessarily fit the constraints of a particular component type. Check suppression ensures that no spurious checks are generated, and that the effects of the pragmas are carried out. ------------ -- Source -- ------------ -- gnat.adc pragma Initialize_Scalars; -- init_scalar.adb with Ada.Text_IO; use Ada.Text_IO; procedure Init_Scalar is type Fixed is delta 0.25 range -12.0 .. 1270.0; type Fixed_Array is array (1 .. 1) of Fixed; begin begin declare Obj : Fixed; pragma Unreferenced (Obj); begin null; end; exception when others => Put_Line ("ERROR: Fixed raised exception"); end; begin declare Obj : Fixed_Array; pragma Unreferenced (Obj); begin null; end; exception when others => Put_Line ("ERROR: Fixed_Array raised exception"); end; end Init_Scalar; ----------------- -- Compilation -- ----------------- $ gnatmake -q init_scalar.adb $ ./init_scalar 2018-05-25 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_ch3.adb (Default_Initialize_Object): Ensure that the analysis of the in-place initialization aggregate created for pragmas Initialize_Scalars or Normalize_Scalars is performed with checks suppressed. From-SVN: r260740
Diffstat (limited to 'gcc/tree-loop-distribution.c')
0 files changed, 0 insertions, 0 deletions