re PR c/86617 (Volatile qualifier is ignored sometimes for unsigned char)
gcc: 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de> PR c/86617 * genmatch.c (dt_operand::gen_match_op): Avoid folding volatile values. testsuite: 2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de> PR c/86617 * gcc.dg/pr86617.c: New test. From-SVN: r262933
This commit is contained in:
parent
a353fec45a
commit
1544db9a61
4 changed files with 27 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
|
||||
PR c/86617
|
||||
* genmatch.c (dt_operand::gen_match_op): Avoid folding volatile values.
|
||||
|
||||
2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
|
||||
* gimple-fold.c (gimple_fold_builtin_printf): Don't create a not NUL
|
||||
|
|
|
@ -2748,12 +2748,14 @@ dt_operand::gen_match_op (FILE *f, int indent, const char *opname, bool)
|
|||
char match_opname[20];
|
||||
match_dop->get_name (match_opname);
|
||||
if (value_match)
|
||||
fprintf_indent (f, indent, "if (%s == %s || operand_equal_p (%s, %s, 0))\n",
|
||||
opname, match_opname, opname, match_opname);
|
||||
fprintf_indent (f, indent, "if ((%s == %s && ! TREE_SIDE_EFFECTS (%s)) "
|
||||
"|| operand_equal_p (%s, %s, 0))\n",
|
||||
opname, match_opname, opname, opname, match_opname);
|
||||
else
|
||||
fprintf_indent (f, indent, "if (%s == %s || (operand_equal_p (%s, %s, 0) "
|
||||
fprintf_indent (f, indent, "if ((%s == %s && ! TREE_SIDE_EFFECTS (%s)) "
|
||||
"|| (operand_equal_p (%s, %s, 0) "
|
||||
"&& types_match (%s, %s)))\n",
|
||||
opname, match_opname, opname, match_opname,
|
||||
opname, match_opname, opname, opname, match_opname,
|
||||
opname, match_opname);
|
||||
fprintf_indent (f, indent + 2, "{\n");
|
||||
return 1;
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
|
||||
PR c/86617
|
||||
* gcc.dg/pr86617.c: New test.
|
||||
|
||||
2018-07-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/86569
|
||||
|
|
11
gcc/testsuite/gcc.dg/pr86617.c
Normal file
11
gcc/testsuite/gcc.dg/pr86617.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
/* { dg-options "-Os -fdump-rtl-final" } */
|
||||
|
||||
volatile unsigned char u8;
|
||||
|
||||
void test (void)
|
||||
{
|
||||
u8 = u8 + u8;
|
||||
u8 = u8 - u8;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-rtl-dump-times "mem/v" 6 "final" } } */
|
Loading…
Add table
Reference in a new issue