This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/36701] [4.4 Regression] unaligned access in gcc.c-torture/execute/complex-7.c
- From: "hjl dot tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Jul 2008 19:37:30 -0000
- Subject: [Bug target/36701] [4.4 Regression] unaligned access in gcc.c-torture/execute/complex-7.c
- References: <bug-36701-682@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #5 from hjl dot tools at gmail dot com 2008-07-07 19:37 -------
A small testcase:
[hjl@gnu-14 good]$ cat ../complex-7.c
volatile _Complex float f1 = 1.1f + 2.2if;
volatile _Complex float f2 = 3.3f + 4.4if;
volatile _Complex float f3 = 5.5f + 6.6if;
volatile _Complex float f4 = 7.7f + 8.8if;
volatile _Complex float f5 = 9.9f + 10.1if;
extern void abort (void);
extern void exit (int);
__attribute__((noinline)) void
check_float (int a, _Complex float a1, _Complex float a2,
_Complex float a3, _Complex float a4, _Complex float a5)
{
if (a1 != f1 || a2 != f2 || a3 != f3 || a4 != f4 || a5 != f5)
abort ();
}
int
main (void)
{
check_float (0, f1, f2, f3, f4, f5);
exit (0);
}
[hjl@gnu-14 good]$
diff -upr bad/complex-7.c.133r.expand good/complex-7.c.133r.expand
--- bad/complex-7.c.133r.expand 2008-07-07 12:33:14.000000000 -0700
+++ good/complex-7.c.133r.expand 2008-07-07 12:33:40.000000000 -0700
@@ -5,115 +5,115 @@
;; Generating RTL for tree basic block 2
;; D.1272 = REALPART_EXPR <a1>
-(insn 62 61 63 ../complex-7.c:14 (set (reg:DI 419)
+(insn 42 41 43 ../complex-7.c:14 (set (reg:DI 401)
(reg/f:DI 335 virtual-stack-vars)) -1 (nil))
-(insn 63 62 64 ../complex-7.c:14 (set (reg/f:DI 420)
+(insn 43 42 44 ../complex-7.c:14 (set (reg/f:DI 402)
(plus:DI (reg/f:DI 335 virtual-stack-vars)
- (const_int 4 [0x4]))) -1 (nil))
+ (const_int 8 [0x8]))) -1 (nil))
-(insn 64 63 0 ../complex-7.c:14 (set (reg:SF 373 [ D.1272 ])
- (mem/s/c:SF (reg/f:DI 420) [0 a1+0 S4 A32])) -1 (nil))
+(insn 44 43 0 ../complex-7.c:14 (set (reg:SF 373 [ D.1272 ])
+ (mem/s/c:SF (reg/f:DI 402) [0 a1+0 S4 A64])) -1 (nil))
The alignment of the first argument passed on stack is wrong.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36701