]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c/53937 (Pack'ing struct causes gcc to not recognize that an field's address...
authorRichard Guenther <rguenther@suse.de>
Fri, 13 Jul 2012 09:45:00 +0000 (09:45 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 13 Jul 2012 09:45:00 +0000 (09:45 +0000)
2012-07-13  Richard Guenther  <rguenther@suse.de>

PR middle-end/53937
* builtins.c (get_pointer_alignment_1): Handle constant
pointers.

From-SVN: r189458

gcc/ChangeLog
gcc/builtins.c

index 3bce65cc00441df7722e7eb3cc45398f6b4c61a0..b317fc50ec438e59e8e163ccb8405784efc2b8a9 100644 (file)
@@ -1,3 +1,9 @@
+2012-07-13  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/53937
+       * builtins.c (get_pointer_alignment_1): Handle constant
+       pointers.
+
 2012-07-13  Richard Sandiford  <rdsandiford@googlemail.com>
            Steven Bosscher  <steven@gcc.gnu.org>
            Bernd Schmidt  <bernds@codesourcery.com>
index c12eb29aa02d561241ecfef3788da3e9dca4d4d7..040f352a0fb0bd9031c6be57f057c2031e2b38c8 100644 (file)
@@ -536,6 +536,13 @@ get_pointer_alignment_1 (tree exp, unsigned int *alignp,
          return false;
        }
     }
+  else if (TREE_CODE (exp) == INTEGER_CST)
+    {
+      *alignp = BIGGEST_ALIGNMENT;
+      *bitposp = ((TREE_INT_CST_LOW (exp) * BITS_PER_UNIT)
+                 & (BIGGEST_ALIGNMENT - 1));
+      return true;
+    }
 
   *bitposp = 0;
   *alignp = BITS_PER_UNIT;