re PR debug/45003 (VTA issues with sign/zero extension and debug temporaries)
PR debug/45003 * cfgexpand.c (expand_debug_expr) <case NOP_EXPR>: Use ZERO_EXTEND or SIGN_EXTEND depending on TYPE_UNSIGNED of the operand's type instead of the result's type. * gcc.dg/guality/pr45003-1.c: New test. From-SVN: r162336
This commit is contained in:
parent
720151cabd
commit
68eaf35cdb
@ -1,3 +1,10 @@
|
|||||||
|
2010-07-20 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR debug/45003
|
||||||
|
* cfgexpand.c (expand_debug_expr) <case NOP_EXPR>: Use ZERO_EXTEND
|
||||||
|
or SIGN_EXTEND depending on TYPE_UNSIGNED of the operand's type
|
||||||
|
instead of the result's type.
|
||||||
|
|
||||||
2010-07-20 Richard Guenther <rguenther@suse.de>
|
2010-07-20 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/44977
|
PR tree-optimization/44977
|
||||||
|
@ -2427,7 +2427,7 @@ expand_debug_expr (tree exp)
|
|||||||
op0 = simplify_gen_subreg (mode, op0, inner_mode,
|
op0 = simplify_gen_subreg (mode, op0, inner_mode,
|
||||||
subreg_lowpart_offset (mode,
|
subreg_lowpart_offset (mode,
|
||||||
inner_mode));
|
inner_mode));
|
||||||
else if (unsignedp)
|
else if (TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (exp, 0))))
|
||||||
op0 = gen_rtx_ZERO_EXTEND (mode, op0);
|
op0 = gen_rtx_ZERO_EXTEND (mode, op0);
|
||||||
else
|
else
|
||||||
op0 = gen_rtx_SIGN_EXTEND (mode, op0);
|
op0 = gen_rtx_SIGN_EXTEND (mode, op0);
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2010-07-20 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR debug/45003
|
||||||
|
* gcc.dg/guality/pr45003-1.c: New test.
|
||||||
|
|
||||||
2010-07-20 Richard Guenther <rguenther@suse.de>
|
2010-07-20 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/44977
|
PR tree-optimization/44977
|
||||||
|
31
gcc/testsuite/gcc.dg/guality/pr45003-1.c
Normal file
31
gcc/testsuite/gcc.dg/guality/pr45003-1.c
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/* PR debug/45003 */
|
||||||
|
/* { dg-do run { target { x86_64-*-* && lp64 } } } */
|
||||||
|
/* { dg-options "-g" } */
|
||||||
|
|
||||||
|
int __attribute__((noinline))
|
||||||
|
foo (unsigned short *p)
|
||||||
|
{
|
||||||
|
int a = *p;
|
||||||
|
asm volatile ("nop");
|
||||||
|
asm volatile ("nop" : : "D" (a)); /* { dg-final { gdb-test 10 "a" "0x8078" } } */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int __attribute__((noinline))
|
||||||
|
bar (short *p)
|
||||||
|
{
|
||||||
|
unsigned int a = *p;
|
||||||
|
asm volatile ("nop");
|
||||||
|
asm volatile ("nop" : : "D" (a)); /* { dg-final { gdb-test 19 "a" "0xffff8078" } } */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
unsigned short us = 0x8078;
|
||||||
|
foo (&us);
|
||||||
|
short s = -32648;
|
||||||
|
bar (&s);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user