[Bug debug/29792] DWARF: Not all inline concrete instances are being generated

pinskia at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sun Nov 12 08:35:00 GMT 2006



------- Comment #4 from pinskia at gcc dot gnu dot org  2006-11-12 08:35 -------
The only thing left from __task_rq_lock is a label.
If we look at that inlined function, we see:
static inline __attribute__((always_inline)) struct rq *__task_rq_lock(struct
task_struct *p)

{
 struct rq *rq;

repeat_lock_task:
 rq = (&(*((void)((task_cpu(p))), &per_cpu__runqueues)));
 do { do { } while (0); (void)0; (void)(&rq->lock); } while (0);
 if (__builtin_expect(!!(rq != (&(*((void)((task_cpu(p))),
&per_cpu__runqueues)))), 0)) {
  do { do { } while (0); (void)0; (void)(&rq->lock); } while (0);
  goto repeat_lock_task;
 }
 return rq;
}


the if is never true as rq is always equal to &per_cpu__runqueues. The calls to
task_cpu were inlined and we constant proped the value of rq the first of the
way through the function which we inlined this to.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29792



More information about the Gcc-bugs mailing list