re PR middle-end/78128 (fortran/resolve.c:resolve_operator miscompiled at -O2)
authorRichard Biener <rguenther@suse.de>
Fri, 28 Oct 2016 13:07:59 +0000 (13:07 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 28 Oct 2016 13:07:59 +0000 (13:07 +0000)
2016-10-28  Richard Biener  <rguenther@suse.de>

PR middle-end/78128
PR middle-end/71002
* fold-const.c (make_bit_field_ref): Only adjust alias set
when the original alias set was zero.

From-SVN: r241645

gcc/ChangeLog
gcc/fold-const.c

index 37637fb7c211dab8784db550cc628e548974fcc0..223396ce4985c000cc62214af5b4c7517d8b0195 100644 (file)
@@ -1,3 +1,10 @@
+2016-10-28  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/78128
+       PR middle-end/71002
+       * fold-const.c (make_bit_field_ref): Only adjust alias set
+       when the original alias set was zero.
+
 2016-10-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * config/s390/s390.c (s390_adjust_loop_scan_osc): New function.
index 89ed89dc25cddadae2deccc8980469596ce1d5d1..eaa7c07188c6a72b7db1c9406f0445e4b9ae8b3d 100644 (file)
@@ -3809,11 +3809,11 @@ make_bit_field_ref (location_t loc, tree inner, tree orig_inner, tree type,
 {
   tree result, bftype;
 
-  if (get_alias_set (inner) != get_alias_set (orig_inner))
+  alias_set_type iset = get_alias_set (orig_inner);
+  if (iset == 0 && get_alias_set (inner) != iset)
     inner = fold_build2 (MEM_REF, TREE_TYPE (inner),
                         build_fold_addr_expr (inner),
-                        build_int_cst
-                         (reference_alias_ptr_type (orig_inner), 0));
+                        build_int_cst (ptr_type_node, 0));
 
   if (bitpos == 0 && !reversep)
     {