public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code
@ 2006-09-20 18:01 ansak at bigfoot dot com
2006-09-20 18:47 ` [Bug c/29154] " pinskia at gcc dot gnu dot org
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: ansak at bigfoot dot com @ 2006-09-20 18:01 UTC (permalink / raw)
To: gcc-bugs
Overview:
The following C generates bad assembler on both PowerPC and Intel, even with no
optimization:
*( *pDest++ )++ = *pSource++;
Ripping this apart into two lines succeeds, thus:
**pDest = *pSource++;
*( *pDest++ )++;
System Description:
System: Apple OS X 10.4 (gcc 4.0.1) and Mandriva Linux 2.6.11-6mdk (downloaded
and built tarballs for 4.0.1 and 4.1.1)
Compiled with: gcc test-increment.c OR
gcc -g test-increment.c OR
gcc -save-temps test-increment.c
Compiler completed with no complaints
Pre-processed intermediate, test-increment.i:
# 1 "test-increment.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "test-increment.c"
# 1 "/usr/include/stdio.h" 1 3 4
# 28 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 308 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 309 "/usr/include/features.h" 2 3 4
# 331 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4
# 332 "/usr/include/features.h" 2 3 4
# 29 "/usr/include/stdio.h" 2 3 4
# 1
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
1 3 4
# 214
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
3 4
typedef unsigned int size_t;
# 35 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/bits/types.h" 1 3 4
# 28 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 29 "/usr/include/bits/types.h" 2 3 4
# 1
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
1 3 4
# 32 "/usr/include/bits/types.h" 2 3 4
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;
__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
# 129 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/typesizes.h" 1 3 4
# 130 "/usr/include/bits/types.h" 2 3 4
__extension__ typedef __u_quad_t __dev_t;
__extension__ typedef unsigned int __uid_t;
__extension__ typedef unsigned int __gid_t;
__extension__ typedef unsigned long int __ino_t;
__extension__ typedef __u_quad_t __ino64_t;
__extension__ typedef unsigned int __mode_t;
__extension__ typedef unsigned int __nlink_t;
__extension__ typedef long int __off_t;
__extension__ typedef __quad_t __off64_t;
__extension__ typedef int __pid_t;
__extension__ typedef struct { int __val[2]; } __fsid_t;
__extension__ typedef long int __clock_t;
__extension__ typedef unsigned long int __rlim_t;
__extension__ typedef __u_quad_t __rlim64_t;
__extension__ typedef unsigned int __id_t;
__extension__ typedef long int __time_t;
__extension__ typedef unsigned int __useconds_t;
__extension__ typedef long int __suseconds_t;
__extension__ typedef int __daddr_t;
__extension__ typedef long int __swblk_t;
__extension__ typedef int __key_t;
__extension__ typedef int __clockid_t;
__extension__ typedef int __timer_t;
__extension__ typedef long int __blksize_t;
__extension__ typedef long int __blkcnt_t;
__extension__ typedef __quad_t __blkcnt64_t;
__extension__ typedef unsigned long int __fsblkcnt_t;
__extension__ typedef __u_quad_t __fsblkcnt64_t;
__extension__ typedef unsigned long int __fsfilcnt_t;
__extension__ typedef __u_quad_t __fsfilcnt64_t;
__extension__ typedef int __ssize_t;
typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;
__extension__ typedef int __intptr_t;
__extension__ typedef unsigned int __socklen_t;
# 37 "/usr/include/stdio.h" 2 3 4
typedef struct _IO_FILE FILE;
# 62 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE __FILE;
# 72 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/libio.h" 1 3 4
# 32 "/usr/include/libio.h" 3 4
# 1 "/usr/include/_G_config.h" 1 3 4
# 14 "/usr/include/_G_config.h" 3 4
# 1
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
1 3 4
# 326
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
3 4
typedef long int wchar_t;
# 355
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
3 4
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3 4
# 24 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 1 "/usr/include/bits/wchar.h" 1 3 4
# 51 "/usr/include/wchar.h" 2 3 4
# 76 "/usr/include/wchar.h" 3 4
typedef struct
{
int __count;
union
{
wint_t __wch;
char __wchb[4];
} __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3 4
typedef struct
{
__off_t __pos;
__mbstate_t __state;
} _G_fpos_t;
typedef struct
{
__off64_t __pos;
__mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/gconv.h" 1 3 4
# 28 "/usr/include/gconv.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 29 "/usr/include/gconv.h" 2 3 4
# 1
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
1 3 4
# 32 "/usr/include/gconv.h" 2 3 4
enum
{
__GCONV_OK = 0,
__GCONV_NOCONV,
__GCONV_NODB,
__GCONV_NOMEM,
__GCONV_EMPTY_INPUT,
__GCONV_FULL_OUTPUT,
__GCONV_ILLEGAL_INPUT,
__GCONV_INCOMPLETE_INPUT,
__GCONV_ILLEGAL_DESCRIPTOR,
__GCONV_INTERNAL_ERROR
};
enum
{
__GCONV_IS_LAST = 0x0001,
__GCONV_IGNORE_ERRORS = 0x0002
};
struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
__const unsigned char **, __const unsigned char *,
unsigned char **, size_t *, int, int);
typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);
typedef int (*__gconv_trans_fct) (struct __gconv_step *,
struct __gconv_step_data *, void *,
__const unsigned char *,
__const unsigned char **,
__const unsigned char *, unsigned char **,
size_t *);
typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
__const unsigned char *,
unsigned char *, unsigned char *);
typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
size_t *);
typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);
struct __gconv_trans_data
{
__gconv_trans_fct __trans_fct;
__gconv_trans_context_fct __trans_context_fct;
__gconv_trans_end_fct __trans_end_fct;
void *__data;
struct __gconv_trans_data *__next;
};
struct __gconv_step
{
struct __gconv_loaded_object *__shlib_handle;
__const char *__modname;
int __counter;
char *__from_name;
char *__to_name;
__gconv_fct __fct;
__gconv_btowc_fct __btowc_fct;
__gconv_init_fct __init_fct;
__gconv_end_fct __end_fct;
int __min_needed_from;
int __max_needed_from;
int __min_needed_to;
int __max_needed_to;
int __stateful;
void *__data;
};
struct __gconv_step_data
{
unsigned char *__outbuf;
unsigned char *__outbufend;
int __flags;
int __invocation_counter;
int __internal_use;
__mbstate_t *__statep;
__mbstate_t __state;
struct __gconv_trans_data *__trans;
};
typedef struct __gconv_info
{
size_t __nsteps;
struct __gconv_step *__steps;
__extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3 4
typedef union
{
struct __gconv_info __cd;
struct
{
struct __gconv_info __cd;
struct __gconv_step_data __data;
} __combined;
} _G_iconv_t;
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 33 "/usr/include/libio.h" 2 3 4
# 53 "/usr/include/libio.h" 3 4
# 1
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stdarg.h"
1 3 4
# 43
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stdarg.h"
3 4
typedef __builtin_va_list __gnuc_va_list;
# 54 "/usr/include/libio.h" 2 3 4
# 166 "/usr/include/libio.h" 3 4
struct _IO_jump_t; struct _IO_FILE;
# 176 "/usr/include/libio.h" 3 4
typedef void _IO_lock_t;
struct _IO_marker {
struct _IO_marker *_next;
struct _IO_FILE *_sbuf;
int _pos;
# 199 "/usr/include/libio.h" 3 4
};
enum __codecvt_result
{
__codecvt_ok,
__codecvt_partial,
__codecvt_error,
__codecvt_noconv
};
# 267 "/usr/include/libio.h" 3 4
struct _IO_FILE {
int _flags;
char* _IO_read_ptr;
char* _IO_read_end;
char* _IO_read_base;
char* _IO_write_base;
char* _IO_write_ptr;
char* _IO_write_end;
char* _IO_buf_base;
char* _IO_buf_end;
char *_IO_save_base;
char *_IO_backup_base;
char *_IO_save_end;
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno;
int _flags2;
__off_t _old_offset;
unsigned short _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
# 315 "/usr/include/libio.h" 3 4
__off64_t _offset;
void *__pad1;
void *__pad2;
int _mode;
char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];
};
typedef struct _IO_FILE _IO_FILE;
struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 354 "/usr/include/libio.h" 3 4
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
size_t __n);
typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
typedef int __io_close_fn (void *__cookie);
# 406 "/usr/include/libio.h" 3 4
extern int __underflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern int __uflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern int __overflow (_IO_FILE *, int) __attribute__ ((__nothrow__));
extern wint_t __wunderflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern wint_t __wuflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern wint_t __woverflow (_IO_FILE *, wint_t) __attribute__ ((__nothrow__));
# 444 "/usr/include/libio.h" 3 4
extern int _IO_getc (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_putc (int __c, _IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_peekc_locked (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
# 474 "/usr/include/libio.h" 3 4
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
__gnuc_va_list, int *__restrict) __attribute__ ((__nothrow__));
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
__gnuc_va_list) __attribute__ ((__nothrow__));
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) __attribute__
((__nothrow__));
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) __attribute__
((__nothrow__));
extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) __attribute__
((__nothrow__));
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) __attribute__
((__nothrow__));
extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
# 73 "/usr/include/stdio.h" 2 3 4
# 86 "/usr/include/stdio.h" 3 4
typedef _G_fpos_t fpos_t;
# 138 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 139 "/usr/include/stdio.h" 2 3 4
extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;
extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
extern int rename (__const char *__old, __const char *__new) __attribute__
((__nothrow__));
extern FILE *tmpfile (void);
# 178 "/usr/include/stdio.h" 3 4
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__));
extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__));
# 196 "/usr/include/stdio.h" 3 4
extern char *tempnam (__const char *__dir, __const char *__pfx)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
extern int fclose (FILE *__stream);
extern int fflush (FILE *__stream);
# 221 "/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 235 "/usr/include/stdio.h" 3 4
extern FILE *fopen (__const char *__restrict __filename,
__const char *__restrict __modes);
extern FILE *freopen (__const char *__restrict __filename,
__const char *__restrict __modes,
FILE *__restrict __stream);
# 262 "/usr/include/stdio.h" 3 4
# 273 "/usr/include/stdio.h" 3 4
extern FILE *fdopen (int __fd, __const char *__modes) __attribute__
((__nothrow__));
# 294 "/usr/include/stdio.h" 3 4
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf)
__attribute__ ((__nothrow__));
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
int __modes, size_t __n) __attribute__ ((__nothrow__));
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
size_t __size) __attribute__ ((__nothrow__));
extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
extern int fprintf (FILE *__restrict __stream,
__const char *__restrict __format, ...);
extern int printf (__const char *__restrict __format, ...);
extern int sprintf (char *__restrict __s,
__const char *__restrict __format, ...) __attribute__ ((__nothrow__));
extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg);
extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg) __attribute__ ((__nothrow__));
extern int snprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3,
4)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3,
0)));
# 388 "/usr/include/stdio.h" 3 4
extern int fscanf (FILE *__restrict __stream,
__const char *__restrict __format, ...);
extern int scanf (__const char *__restrict __format, ...);
extern int sscanf (__const char *__restrict __s,
__const char *__restrict __format, ...) __attribute__ ((__nothrow__));
# 430 "/usr/include/stdio.h" 3 4
extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);
extern int getchar (void);
# 454 "/usr/include/stdio.h" 3 4
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
# 465 "/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);
extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);
extern int putchar (int __c);
# 498 "/usr/include/stdio.h" 3 4
extern int fputc_unlocked (int __c, FILE *__stream);
extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);
extern int getw (FILE *__stream);
extern int putw (int __w, FILE *__stream);
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream);
extern char *gets (char *__s);
# 578 "/usr/include/stdio.h" 3 4
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
extern int puts (__const char *__s);
extern int ungetc (int __c, FILE *__stream);
extern size_t fread (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __s);
# 631 "/usr/include/stdio.h" 3 4
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern int fseek (FILE *__stream, long int __off, int __whence);
extern long int ftell (FILE *__stream);
extern void rewind (FILE *__stream);
# 686 "/usr/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
# 709 "/usr/include/stdio.h" 3 4
# 718 "/usr/include/stdio.h" 3 4
extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof (FILE *__stream) __attribute__ ((__nothrow__));
extern int ferror (FILE *__stream) __attribute__ ((__nothrow__));
extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern void perror (__const char *__s);
# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
# 27 "/usr/include/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 748 "/usr/include/stdio.h" 2 3 4
extern int fileno (FILE *__stream) __attribute__ ((__nothrow__));
extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
# 767 "/usr/include/stdio.h" 3 4
extern FILE *popen (__const char *__command, __const char *__modes);
extern int pclose (FILE *__stream);
extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
# 807 "/usr/include/stdio.h" 3 4
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__));
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
# 834 "/usr/include/stdio.h" 3 4
# 2 "test-increment.c" 2
# 1 "/usr/include/string.h" 1 3 4
# 28 "/usr/include/string.h" 3 4
# 1
"/home/akla/gcc-4.1.1-install/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stddef.h"
1 3 4
# 34 "/usr/include/string.h" 2 3 4
extern void *memcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memmove (void *__dest, __const void *__src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
int __c, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memset (void *__s, int __c, size_t __n) __attribute__
((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern void *memchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
# 82 "/usr/include/string.h" 3 4
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__
(1, 2)));
extern int strcmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern int strcoll (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern size_t strxfrm (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
# 130 "/usr/include/string.h" 3 4
extern char *strdup (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__
((__nonnull__ (1)));
# 165 "/usr/include/string.h" 3 4
extern char *strchr (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern char *strrchr (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
# 181 "/usr/include/string.h" 3 4
extern size_t strcspn (__const char *__s, __const char *__reject)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern size_t strspn (__const char *__s, __const char *__accept)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern char *strpbrk (__const char *__s, __const char *__accept)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern char *strstr (__const char *__haystack, __const char *__needle)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern char *__strtok_r (char *__restrict __s,
__const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
# 240 "/usr/include/string.h" 3 4
extern size_t strlen (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
# 254 "/usr/include/string.h" 3 4
extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
# 281 "/usr/include/string.h" 3 4
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__))
__attribute__ ((__nonnull__ (1)));
extern void bcopy (__const void *__src, void *__dest, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__))
__attribute__ ((__nonnull__ (1)));
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern char *index (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern char *rindex (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__
((__const__));
# 325 "/usr/include/string.h" 3 4
extern int strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
# 348 "/usr/include/string.h" 3 4
extern char *strsep (char **__restrict __stringp,
__const char *__restrict __delim)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
# 426 "/usr/include/string.h" 3 4
# 3 "test-increment.c" 2
char source[] = "mdaceaeplsgspeciilvhcgyeeanirwl nl ligyoyn b
tcifaernupletsplaeceitgaagirtrevaiinitonctengeyds.....";
int main()
{
char destBuffer[ 1024 ];
char* dest1[ 5 ] = { destBuffer, destBuffer + 30, destBuffer + 60,
destBuffer + 90, destBuffer + 120 };
strcpy( dest1[ 0 ], " " );
strcpy( dest1[ 1 ], " " );
strcpy( dest1[ 2 ], " " );
strcpy( dest1[ 3 ], " " );
strcpy( dest1[ 4 ], " " );
char* dest2[ 5 ] = { destBuffer + 200, destBuffer + 230, destBuffer + 260,
destBuffer + 290, destBuffer + 320 };
strcpy( dest2[ 0 ], " " );
strcpy( dest2[ 1 ], " " );
strcpy( dest2[ 2 ], " " );
strcpy( dest2[ 3 ], " " );
strcpy( dest2[ 4 ], " " );
char* pSource = source;
{
char* outPtrs[ 6 ];
outPtrs[ 0 ] = dest1[ 0 ];
outPtrs[ 1 ] = dest1[ 1 ];
outPtrs[ 2 ] = dest1[ 2 ];
outPtrs[ 3 ] = dest1[ 3 ];
outPtrs[ 4 ] = dest1[ 4 ];
int nToCopy = 100 / 5;
char* pReadBuf = pSource;
char* pEnd = pSource + 100;
char** pEndWriteBufs = outPtrs + 5;
while( pReadBuf < pEnd )
{
char** pWriteBuf = &outPtrs[0];
while( pWriteBuf < pEndWriteBufs )
{
**pWriteBuf = *pReadBuf++;
(*( pWriteBuf ++ ) )++;
}
}
}
{
char* outPtrs[ 6 ];
outPtrs[ 0 ] = dest2[ 0 ];
outPtrs[ 1 ] = dest2[ 1 ];
outPtrs[ 2 ] = dest2[ 2 ];
outPtrs[ 3 ] = dest2[ 3 ];
outPtrs[ 4 ] = dest2[ 4 ];
int nToCopy = 100 / 5;
char* pReadBuf = pSource;
char* pEnd = pSource + 100;
char** pEndWriteBufs = outPtrs + 5;
while( pReadBuf < pEnd )
{
char** pWriteBuf = &outPtrs[0];
while( pWriteBuf < pEndWriteBufs )
{
*(*pWriteBuf++)++ = *pReadBuf++;
}
}
}
printf( "dest1 strings should equal dest2 strings. Do they?\n" );
{
int i;
for( i = 0; i < 5; ++i )
{
printf( "dest1[%d] = %s\n", i, dest1 [ i ] );
printf( " dest2[%d] = %s\n" , i, dest2 [ i ] );
}
}
return 0;
}
Expected result:
On output, dest1 and dest2 strings should both contain a matched set of
mystagogical drivel.
Actual result:
On gcc 3.x dest1 and dest2 strings show the same drivel, on gcc 4.x they do
not.
--
Summary: *(* ppointer++)++ = *pointer++ generates bad code
Product: gcc
Version: 4.1.1
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ansak at bigfoot dot com
GCC build triplet: 4.1.1
GCC host triplet: 4.0.1
GCC target triplet: 4.1.1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
@ 2006-09-20 18:47 ` pinskia at gcc dot gnu dot org
2006-09-21 9:12 ` [Bug c/29154] [4.0/4.1/4.2 Regression] " rguenth at gcc dot gnu dot org
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-09-20 18:47 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from pinskia at gcc dot gnu dot org 2006-09-20 18:47 -------
**pDest = *pSource++;
*( *pDest++ )++;
[t1.c : 1055] D.1948 = *pWriteBuf;
[t1.c : 1055] D.1949 = *pReadBuf;
[t1.c : 1055] *D.1948 = D.1949;
[t1.c : 1055] pReadBuf = pReadBuf + 1B;
[t1.c : 1056] D.1950 = *pWriteBuf;
[t1.c : 1056] D.1951 = D.1950 + 1B;
[t1.c : 1056] *pWriteBuf = D.1951;
[t1.c : 1056] pWriteBuf = pWriteBuf + 4B;
*(*(pWriteBuf++)++) = *pReadBuf++;
[t1.c : 1079] D.1957 = *pWriteBuf;
[t1.c : 1079] D.1959 = *pReadBuf;
[t1.c : 1079] *D.1957 = D.1959;
[t1.c : 1079] pWriteBuf = pWriteBuf + 4B;
[t1.c : 1079] D.1958 = D.1957 + 1B;
[t1.c : 1079] *pWriteBuf = D.1958; <--- store at *(pWriteBuf+1)
[t1.c : 1079] pReadBuf = pReadBuf + 1B;
I don't know if this is correct.
Next time please attach the preprocessed source after filing the bug report
instead of copying and pasting the source into the bug report.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] [4.0/4.1/4.2 Regression] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
2006-09-20 18:47 ` [Bug c/29154] " pinskia at gcc dot gnu dot org
@ 2006-09-21 9:12 ` rguenth at gcc dot gnu dot org
2006-09-22 7:30 ` pinskia at gcc dot gnu dot org
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-09-21 9:12 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from rguenth at gcc dot gnu dot org 2006-09-21 09:12 -------
Confirmed. Gimplification get's this wrong. Testcase:
extern void abort (void);
void foo(int **p, int *q)
{
*(*p++)++ = *q++;
}
int main()
{
int i = 42, j = 0;
int *p = &i;
foo(&p, &j);
if (p - 1 != &i
|| j != 0
|| i != 0)
abort ();
return 0;
}
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu dot
| |org, rakdver at gcc dot gnu
| |dot org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Keywords| |wrong-code
Known to fail| |4.0.3 4.1.1 4.2.0
Known to work| |3.4.6
Last reconfirmed|0000-00-00 00:00:00 |2006-09-21 09:12:02
date| |
Summary|*(* ppointer++)++ = |[4.0/4.1/4.2 Regression] *(*
|*pointer++ generates bad |ppointer++)++ = *pointer++
|code |generates bad code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] [4.0/4.1/4.2 Regression] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
2006-09-20 18:47 ` [Bug c/29154] " pinskia at gcc dot gnu dot org
2006-09-21 9:12 ` [Bug c/29154] [4.0/4.1/4.2 Regression] " rguenth at gcc dot gnu dot org
@ 2006-09-22 7:30 ` pinskia at gcc dot gnu dot org
2006-09-22 20:25 ` jakub at gcc dot gnu dot org
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-09-22 7:30 UTC (permalink / raw)
To: gcc-bugs
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |4.0.4
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] [4.0/4.1/4.2 Regression] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
` (2 preceding siblings ...)
2006-09-22 7:30 ` pinskia at gcc dot gnu dot org
@ 2006-09-22 20:25 ` jakub at gcc dot gnu dot org
2006-09-23 10:33 ` rguenth at gcc dot gnu dot org
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu dot org @ 2006-09-22 20:25 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from jakub at gcc dot gnu dot org 2006-09-22 20:25 -------
I wonder if we just shouldn't ensure that for postfix exprs post_p statements
of the inner expression are put after, not before the +=/-=.
Something like:
--- gimplify.c.jj2 2006-09-02 08:47:25.000000000 +0200
+++ gimplify.c 2006-09-22 22:21:29.000000000 +0200
@@ -1896,7 +1896,7 @@ gimplify_self_mod_expr (tree *expr_p, tr
bool want_value)
{
enum tree_code code;
- tree lhs, lvalue, rhs, t1;
+ tree lhs, lvalue, rhs, t1, post = NULL, *orig_post_p = post_p;
bool postfix;
enum tree_code arith_code;
enum gimplify_status ret;
@@ -1913,6 +1913,9 @@ gimplify_self_mod_expr (tree *expr_p, tr
else
postfix = false;
+ if (postfix)
+ post_p = &post;
+
/* Add or subtract? */
if (code == PREINCREMENT_EXPR || code == POSTINCREMENT_EXPR)
arith_code = PLUS_EXPR;
@@ -1943,7 +1946,8 @@ gimplify_self_mod_expr (tree *expr_p, tr
if (postfix)
{
- gimplify_and_add (t1, post_p);
+ gimplify_and_add (t1, orig_post_p);
+ append_to_statement_list (post, orig_post_p);
*expr_p = lhs;
return GS_ALL_DONE;
}
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |dnovillo at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] [4.0/4.1/4.2 Regression] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
` (3 preceding siblings ...)
2006-09-22 20:25 ` jakub at gcc dot gnu dot org
@ 2006-09-23 10:33 ` rguenth at gcc dot gnu dot org
2006-10-01 22:57 ` mmitchel at gcc dot gnu dot org
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2006-09-23 10:33 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from rguenth at gcc dot gnu dot org 2006-09-23 10:33 -------
Sounds reasonable.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] [4.0/4.1/4.2 Regression] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
` (4 preceding siblings ...)
2006-09-23 10:33 ` rguenth at gcc dot gnu dot org
@ 2006-10-01 22:57 ` mmitchel at gcc dot gnu dot org
2006-10-02 6:12 ` jakub at gcc dot gnu dot org
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2006-10-01 22:57 UTC (permalink / raw)
To: gcc-bugs
--
mmitchel at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] [4.0/4.1/4.2 Regression] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
` (5 preceding siblings ...)
2006-10-01 22:57 ` mmitchel at gcc dot gnu dot org
@ 2006-10-02 6:12 ` jakub at gcc dot gnu dot org
2006-10-02 6:24 ` jakub at gcc dot gnu dot org
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu dot org @ 2006-10-02 6:12 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from jakub at gcc dot gnu dot org 2006-10-02 06:11 -------
Subject: Bug 29154
Author: jakub
Date: Mon Oct 2 06:11:49 2006
New Revision: 117366
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117366
Log:
PR c/29154
* gimplify.c (gimplify_self_mod_expr): Run inner expression's post
side effects after the outer expression's post side effects.
* gcc.c-torture/execute/20060929-1.c: New test.
Added:
trunk/gcc/testsuite/gcc.c-torture/execute/20060929-1.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/gimplify.c
trunk/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] [4.0/4.1/4.2 Regression] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
` (6 preceding siblings ...)
2006-10-02 6:12 ` jakub at gcc dot gnu dot org
@ 2006-10-02 6:24 ` jakub at gcc dot gnu dot org
2006-10-02 6:28 ` [Bug c/29154] [4.0 " jakub at gcc dot gnu dot org
2007-02-03 20:18 ` gdr at gcc dot gnu dot org
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu dot org @ 2006-10-02 6:24 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from jakub at gcc dot gnu dot org 2006-10-02 06:23 -------
Subject: Bug 29154
Author: jakub
Date: Mon Oct 2 06:23:48 2006
New Revision: 117367
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117367
Log:
PR c/29154
* gimplify.c (gimplify_self_mod_expr): Run inner expression's post
side effects after the outer expression's post side effects.
* gcc.c-torture/execute/20060929-1.c: New test.
Added:
branches/gcc-4_1-branch/gcc/testsuite/gcc.c-torture/execute/20060929-1.c
Modified:
branches/gcc-4_1-branch/gcc/ChangeLog
branches/gcc-4_1-branch/gcc/gimplify.c
branches/gcc-4_1-branch/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] [4.0 Regression] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
` (7 preceding siblings ...)
2006-10-02 6:24 ` jakub at gcc dot gnu dot org
@ 2006-10-02 6:28 ` jakub at gcc dot gnu dot org
2007-02-03 20:18 ` gdr at gcc dot gnu dot org
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu dot org @ 2006-10-02 6:28 UTC (permalink / raw)
To: gcc-bugs
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |jakub at gcc dot gnu dot org
|dot org |
Status|NEW |ASSIGNED
Known to fail|4.0.3 4.1.1 4.2.0 |4.0.3 4.1.1
Known to work|3.4.6 |3.4.6 4.1.2 4.2.0
Last reconfirmed|2006-09-21 09:12:02 |2006-10-02 06:28:48
date| |
Summary|[4.0/4.1/4.2 Regression] *(*|[4.0 Regression] *(*
|ppointer++)++ = *pointer++ |ppointer++)++ = *pointer++
|generates bad code |generates bad code
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c/29154] [4.0 Regression] *(* ppointer++)++ = *pointer++ generates bad code
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
` (8 preceding siblings ...)
2006-10-02 6:28 ` [Bug c/29154] [4.0 " jakub at gcc dot gnu dot org
@ 2007-02-03 20:18 ` gdr at gcc dot gnu dot org
9 siblings, 0 replies; 11+ messages in thread
From: gdr at gcc dot gnu dot org @ 2007-02-03 20:18 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from gdr at gcc dot gnu dot org 2007-02-03 20:18 -------
Fixed in GCC-4.1.2
--
gdr at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
Target Milestone|4.0.4 |4.1.2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29154
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2007-02-03 20:18 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-09-20 18:01 [Bug c/29154] New: *(* ppointer++)++ = *pointer++ generates bad code ansak at bigfoot dot com
2006-09-20 18:47 ` [Bug c/29154] " pinskia at gcc dot gnu dot org
2006-09-21 9:12 ` [Bug c/29154] [4.0/4.1/4.2 Regression] " rguenth at gcc dot gnu dot org
2006-09-22 7:30 ` pinskia at gcc dot gnu dot org
2006-09-22 20:25 ` jakub at gcc dot gnu dot org
2006-09-23 10:33 ` rguenth at gcc dot gnu dot org
2006-10-01 22:57 ` mmitchel at gcc dot gnu dot org
2006-10-02 6:12 ` jakub at gcc dot gnu dot org
2006-10-02 6:24 ` jakub at gcc dot gnu dot org
2006-10-02 6:28 ` [Bug c/29154] [4.0 " jakub at gcc dot gnu dot org
2007-02-03 20:18 ` gdr at gcc dot gnu dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).