| /* { dg-do compile } */ |
| /* { dg-options "-O2 -fno-delayed-branch" } */ |
| /* In this test we want to verify that combine canonicalizes the |
| MULT into an ASHIFT which in turn allows postreload-gcse to |
| find the common subexpression. |
| |
| Neither pass dumps stuff in a format that is particularly good |
| for parsing here, so we count the shadd insns. More is not |
| necessarily better in this test. If this test is too fragile |
| over time we'll have to revisit the combine and/or postreload |
| dumps. Note we have disabled delay slot filling to improve |
| test stability. */ |
| /* { dg-final { scan-assembler-times "sh.add" 4 } } */ |
| |
| extern void oof (void); |
| typedef struct simple_bitmap_def *sbitmap; |
| struct simple_bitmap_def |
| { |
| unsigned char *popcount; |
| unsigned int n_bits; |
| unsigned long elms[1]; |
| }; |
| __inline__ void |
| SET_BIT (sbitmap map, unsigned int bitno) |
| { |
| if (map->popcount) |
| { |
| unsigned char oldbit; |
| oldbit = |
| ((map)->elms[bitno / 64]); |
| if (!oldbit) |
| oof (); |
| } |
| map->elms[bitno / 64] |= 1; |
| } |
| |
| void |
| fix_bb_placements (int indx1, int indx2, sbitmap in_queue) |
| { |
| SET_BIT (in_queue, indx1); |
| SET_BIT (in_queue, indx2); |
| } |