diff mbox

[Ada] Fix wrong size computation with boolean discriminant

Message ID 2804194.8xxgSTci64@polaris
State New
Headers show

Commit Message

Eric Botcazou Feb. 24, 2017, 9:52 a.m. UTC
This is a regression present on the mainline and caused by the wrong handling 
of TRUTH_NOT_EXPR by the max_size function.

Tested on x86_64-suse-linux, applied on the mainline.


2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gcc-interface/utils.c (max_size) <tcc_expression>: Flip the second
	argument when recursing on TRUTH_NOT_EXPR.


2017-02-24  Eric Botcazou  <ebotcazou@adacore.com>

	* gnat.dg/discr47.adb: New test.
diff mbox

Patch

Index: gcc-interface/utils.c
===================================================================
--- gcc-interface/utils.c	(revision 245625)
+++ gcc-interface/utils.c	(working copy)
@@ -3635,7 +3635,8 @@  max_size (tree exp, bool max_p)
 	    return exp;
 
 	  return fold_build1 (code, type,
-			      max_size (TREE_OPERAND (exp, 0), max_p));
+			      max_size (TREE_OPERAND (exp, 0),
+			      code == TRUTH_NOT_EXPR ? !max_p : max_p));
 
 	case 2:
 	  if (code == COMPOUND_EXPR)