d: Fix regression, all 32-bit execution tests FAIL: internal error printing module...
authorIain Buclaw <ibuclaw@gdcproject.org>
Fri, 31 Jul 2020 14:03:17 +0000 (16:03 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Fri, 31 Jul 2020 16:43:23 +0000 (18:43 +0200)
For 32-bit btr(), BIT_NOT_EXPR was being generated twice, something that
was not seen with the 64-bit variant.  Removed the second call to fix
the generated code.

gcc/d/ChangeLog:

PR d/96393
* intrinsics.cc (expand_intrinsic_bt): Don't generate BIT_NOT_EXPR for
btr32 intrinsic.

gcc/d/intrinsics.cc

index 8eec0af60eeb047ae8bc856d9ff204617727889f..486db1277472f3e1ec560026eafddd03d559a9c0 100644 (file)
@@ -351,9 +351,6 @@ expand_intrinsic_bt (intrinsic_code intrinsic, tree callexp)
     }
 
   /* ptr[bitnum / size] op= mask;  */
-  if (intrinsic == INTRINSIC_BTR)
-    bitnum = fold_build1 (BIT_NOT_EXPR, TREE_TYPE (bitnum), bitnum);
-
   ptr = modify_expr (ptr, fold_build2 (code, TREE_TYPE (ptr), ptr, bitnum));
 
   /* Store the condition result in a temporary, and return expressions in