Skip to content
Snippets Groups Projects
  • Eric Botcazou's avatar
    3d3930f5
    ada: Fix double finalization of case expression in concatenation · 3d3930f5
    Eric Botcazou authored
    This streamlines the expansion of case expressions by not wrapping them in
    an Expression_With_Actions node when the type is not by copy, which avoids
    the creation of a temporary and the associated finalization issues.
    
    That's the same strategy as the one used for the expansion of if expressions
    when the type is by reference, unless Back_End_Handles_Limited_Types is set
    to True. Given that it is never set to True, except by a debug switch, and
    has never been implemented, this parameter is removed in the process.
    
    gcc/ada/
    
    	* debug.adb (d.L): Remove documentation.
    	* exp_ch4.adb (Expand_N_Case_Expression): In the not-by-copy case,
    	do not wrap the case statement in an Expression_With_Actions node.
    	(Expand_N_If_Expression): Do not test
    	Back_End_Handles_Limited_Types
    	* gnat1drv.adb (Adjust_Global_Switches): Do not set it.
    	* opt.ads (Back_End_Handles_Limited_Types): Delete.
    3d3930f5
    History
    ada: Fix double finalization of case expression in concatenation
    Eric Botcazou authored
    This streamlines the expansion of case expressions by not wrapping them in
    an Expression_With_Actions node when the type is not by copy, which avoids
    the creation of a temporary and the associated finalization issues.
    
    That's the same strategy as the one used for the expansion of if expressions
    when the type is by reference, unless Back_End_Handles_Limited_Types is set
    to True. Given that it is never set to True, except by a debug switch, and
    has never been implemented, this parameter is removed in the process.
    
    gcc/ada/
    
    	* debug.adb (d.L): Remove documentation.
    	* exp_ch4.adb (Expand_N_Case_Expression): In the not-by-copy case,
    	do not wrap the case statement in an Expression_With_Actions node.
    	(Expand_N_If_Expression): Do not test
    	Back_End_Handles_Limited_Types
    	* gnat1drv.adb (Adjust_Global_Switches): Do not set it.
    	* opt.ads (Back_End_Handles_Limited_Types): Delete.