aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2010-06-06 13:38:46 +0200
committerSegher Boessenkool <segher@gcc.gnu.org>2010-06-06 13:38:46 +0200
commit346967d1cf5cf5f53a48aa8483365e3d1405ff2d (patch)
tree84cb7a59b5601c05888ee22f76caff55b40fef10 /gcc
parent640c2adff1e62150e851e5fb5053042155e551b1 (diff)
downloadgcc-346967d1cf5cf5f53a48aa8483365e3d1405ff2d.zip
gcc-346967d1cf5cf5f53a48aa8483365e3d1405ff2d.tar.gz
gcc-346967d1cf5cf5f53a48aa8483365e3d1405ff2d.tar.bz2
re PR bootstrap/44427 (genautomata uses more than 1.5GB of RAM on powerpc64-linux)
gcc/ChangeLog 2010-06-06 Segher Boessenkool <segher@kernel.crashing.org> PR bootstrap/44427 PR bootstrap/44428 genautomata.c (SET_BIT, CLEAR_BIT, TEST_BIT): Make these macros endianness-independent. From-SVN: r160338
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/genautomata.c11
2 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9dddeb1..d353dfb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2010-06-06 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR bootstrap/44427
+ PR bootstrap/44428
+ genautomata.c (SET_BIT, CLEAR_BIT, TEST_BIT): Make these macros
+ endianness-independent.
+
2010-06-05 Steven Bosscher <steven@gcc.gnu.org>
* c-common.c: Move to c-family/.
diff --git a/gcc/genautomata.c b/gcc/genautomata.c
index ad7caa6..f7493c7 100644
--- a/gcc/genautomata.c
+++ b/gcc/genautomata.c
@@ -3314,15 +3314,18 @@ finish_alt_states (void)
/* Set bit number bitno in the bit string. The macro is not side
effect proof. */
#define SET_BIT(bitstring, bitno) \
- (((char *) (bitstring)) [(bitno) / CHAR_BIT] |= 1 << (bitno) % CHAR_BIT)
+ ((bitstring)[(bitno) / (sizeof (*(bitstring)) * CHAR_BIT)] |= \
+ (HOST_WIDE_INT)1 << (bitno) % (sizeof (*(bitstring)) * CHAR_BIT))
#define CLEAR_BIT(bitstring, bitno) \
- (((char *) (bitstring)) [(bitno) / CHAR_BIT] &= ~(1 << (bitno) % CHAR_BIT))
+ ((bitstring)[(bitno) / (sizeof (*(bitstring)) * CHAR_BIT)] &= \
+ ~((HOST_WIDE_INT)1 << (bitno) % (sizeof (*(bitstring)) * CHAR_BIT)))
/* Test if bit number bitno in the bitstring is set. The macro is not
side effect proof. */
-#define TEST_BIT(bitstring, bitno) \
- (((char *) (bitstring)) [(bitno) / CHAR_BIT] >> (bitno) % CHAR_BIT & 1)
+#define TEST_BIT(bitstring, bitno) \
+ ((bitstring)[(bitno) / (sizeof (*(bitstring)) * CHAR_BIT)] >> \
+ (bitno) % (sizeof (*(bitstring)) * CHAR_BIT) & 1)