This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/42774] [4.4/4.5 Regression] ICE in get_aligned_mem, at config/alpha/alpha.c:1484
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 17 Jan 2010 19:47:35 -0000
- Subject: [Bug target/42774] [4.4/4.5 Regression] ICE in get_aligned_mem, at config/alpha/alpha.c:1484
- References: <bug-42774-5724@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #3 from ubizjak at gmail dot com 2010-01-17 19:47 -------
Well, gcc would just generate invalid code without this assert.
Reduced test:
--cut here--
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long int uint64_t;
typedef uint16_t u16;
typedef uint32_t u32;
typedef uint64_t u64;
enum
{ FSYSHEADKEY_NULL =
0, FSYSHEADKEY_FILESYSTEM, FSYSHEADKEY_MNTPATH, FSYSHEADKEY_BYTESTOTAL,
FSYSHEADKEY_MINFSAVERSION, FSYSHEADKEY_MOUNTINFO, FSYSHEADKEY_ORIGDEV,
FSYSHEADKEY_FSEXTEOPTRAIDSTRIDE };
typedef struct s_dico
{
}
cdico;
struct s_ntfsinfo
{
u32 bytes_per_sector;
u64 uuid;
};
enum
{ MSG_FORCE = 0, MSG_VERB1 = 1, MSG_VERB2 = 2, MSG_STACK = 3, MSG_DEBUG1 =
4, MSG_DEBUG2 = 5, MSG_DEBUG3 = 6, MSG_DEBUG4 = 7, MSG_DEBUG5 = 8 };
ntfs_getinfo (cdico * d, char *devname)
{
struct s_ntfsinfo info;
char bootsect[512];
int fd = -1;
info.bytes_per_sector = ((u16) (*((u16 *) (bootsect + 0xB))));
foo (info.bytes_per_sector);
info.uuid = ((u64) (*((u64 *) (bootsect + 0x48))));
fsaprintf (MSG_VERB2, 0, MSG_VERB2 >= 3, "fs_ntfs.c", __FUNCTION__, 107,
"bytes_per_sector=[%lld]\n", (long long) info.bytes_per_sector);
fsaprintf (MSG_VERB2, 0, MSG_VERB2 >= 3, "fs_ntfs.c", __FUNCTION__, 109,
"uuid=[%016llX]\n", (long long unsigned int) info.uuid);
dico_add_u64 (d, 0, FSYSHEADKEY_MINFSAVERSION,
((u64)
((((u64) 0 & 0xFFFF) << 48) + (((u64) 6 & 0xFFFF) << 32) +
(((u64) 4 & 0xFFFF) << 16) + (((u64) 0 & 0xFFFF) << 0))));
}
--cut here--
Problematic line is bootsect + 0xB that crosses SImode aligned load.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42774