--- Comment #7 from kazu at gcc dot gnu dot org 2006-05-17 21:35 ---
Subject: Bug 27477
Author: kazu
Date: Wed May 17 21:34:57 2006
New Revision: 113872
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=113872
Log:
PR rtl-optimization/27477
* combine.c (try_combine):
--
kazu at gcc dot gnu dot org changed:
What|Removed |Added
Target Milestone|--- |4.2.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27477
--- Comment #8 from kazu at gcc dot gnu dot org 2006-05-17 21:37 ---
Just checked in a patch.
--
kazu at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #5 from kazu at gcc dot gnu dot org 2006-05-10 14:21 ---
Reduced down to:
extern void bar (int);
int
foo (int a, int b)
{
int c = a == b;
if (c)
bar (c);
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27477
--- Comment #6 from kazu at gcc dot gnu dot org 2006-05-10 15:00 ---
The combiner seems to be doing something strange:
(insn 13 12 16 2 (set (reg:HI 21)
(eq:HI (cc0)
(const_int 0 [0x0]))) 237 {*bstzhireg} (nil)
(nil))
(insn 16 13 17 2 (set (cc0)
(reg:HI
--
kazu at gcc dot gnu dot org changed:
What|Removed |Added
AssignedTo|unassigned at gcc dot gnu |kazu at gcc dot gnu dot org
|dot org
--- Comment #2 from pinskia at gcc dot gnu dot org 2006-05-08 07:09 ---
Reducing.
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #3 from pinskia at gcc dot gnu dot org 2006-05-08 17:12 ---
Reduced testcase:
typedef long unsigned int size_t;
struct string
{
char* _M_data() const;
size_t size() const ;
void push_back(char __c)
{
_M_data()[this-size()] = __c;
}
};
bool
--- Comment #4 from kazu at gcc dot gnu dot org 2006-05-08 18:55 ---
Reduced to a C testcase:
extern void bar (int c);
int b;
int
foo (int c1, int c2, int c3)
{
int plus = c1 == c2;
if ((plus || c1 == c3)
! b)
bar (plus);
}
--