From 42eb8bd17982621ad29ec491053851fd2d0d740e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 29 Jan 2014 11:35:15 +0100 Subject: [PATCH] re PR other/58712 (issues found by --enable-checking=valgrind) PR other/58712 * read-rtl.c (read_rtx_code): Clear all of RTX_CODE_SIZE (code). For REGs set ORIGINAL_REGNO. From-SVN: r207230 --- gcc/ChangeLog | 6 ++++++ gcc/read-rtl.c | 3 +++ 2 files changed, 9 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1dd3a58e158..c8a165828ac 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-01-29 Jakub Jelinek + + PR other/58712 + * read-rtl.c (read_rtx_code): Clear all of RTX_CODE_SIZE (code). + For REGs set ORIGINAL_REGNO. + 2014-01-29 Bingfeng Mei * doc/md.texi: Mention that a target shouldn't implement diff --git a/gcc/read-rtl.c b/gcc/read-rtl.c index aa7c03b2060..81ce1a864ae 100644 --- a/gcc/read-rtl.c +++ b/gcc/read-rtl.c @@ -1131,6 +1131,7 @@ read_rtx_code (const char *code_name) /* If we end up with an insn expression then we free this space below. */ return_rtx = rtx_alloc (code); format_ptr = GET_RTX_FORMAT (code); + memset (return_rtx, 0, RTX_CODE_SIZE (code)); PUT_CODE (return_rtx, code); if (iterator) @@ -1154,6 +1155,8 @@ read_rtx_code (const char *code_name) /* 0 means a field for internal use only. Don't expect it to be present in the input. */ case '0': + if (code == REG) + ORIGINAL_REGNO (return_rtx) = REGNO (return_rtx); break; case 'e': -- 2.30.2