11541Srgrimes/* PR rtl-optimization/27616 */
21541Srgrimes/* Reported by Lee Ji Hwan <moonz@kaist.ac.kr> */
31541Srgrimes/* Testcase by Andrew Pinski <pinskia@gcc.gnu.org> */
41541Srgrimes
51541Srgrimesstruct chunk_s
61541Srgrimes{
71541Srgrimes  unsigned int size;
81541Srgrimes  int offset_next;
91541Srgrimes};
101541Srgrimes
111541Srgrimestypedef struct chunk_s chunk_t;
121541Srgrimes
131541Srgrimesvoid foo(chunk_t *first)
141541Srgrimes{
151541Srgrimes  chunk_t *cur;
161541Srgrimes  char *first0;
171541Srgrimes
181541Srgrimes  do {
191541Srgrimes    first0 = (char *) first;
201541Srgrimes    cur = (chunk_t *) (first0 + first->offset_next);
211541Srgrimes    if ((chunk_t *) (first0 + cur->offset_next) != first)
221541Srgrimes      return ;
231541Srgrimes
241541Srgrimes    first->offset_next = 0;
251541Srgrimes
261541Srgrimes  } while (cur->size != 0);
271541Srgrimes}
281541Srgrimes