Commit 2397d13c by Alan Modra Committed by Alan Modra

re PR middle-end/65182 (-Wuninitialized fails when pointer to variable later…

re PR middle-end/65182 (-Wuninitialized fails when pointer to variable later passed to function (fixed? add testcase?))

	PR target/65182
	* config/rs6000/rs6000.c (get_memref_parts): Only return true
	when *base is a reg.  Handle nested plus addresses.  Simplify
	pre_modify test.

From-SVN: r220924
parent 637ece3f
2015-02-24 Alan Modra <amodra@gmail.com>
PR target/65182
* config/rs6000/rs6000.c (get_memref_parts): Only return true
when *base is a reg. Handle nested plus addresses. Simplify
pre_modify test.
2015-02-22 Max Filippov <jcmvbkbc@gmail.com> 2015-02-22 Max Filippov <jcmvbkbc@gmail.com>
* config/xtensa/xtensa.h (CONSTANT_ALIGNMENT, DATA_ALIGNMENT): * config/xtensa/xtensa.h (CONSTANT_ALIGNMENT, DATA_ALIGNMENT):
......
...@@ -27172,25 +27172,21 @@ get_memref_parts (rtx mem, rtx *base, HOST_WIDE_INT *offset, ...@@ -27172,25 +27172,21 @@ get_memref_parts (rtx mem, rtx *base, HOST_WIDE_INT *offset,
else else
return false; return false;
if (GET_CODE (XEXP (mem, 0)) == PRE_MODIFY) addr_rtx = (XEXP (mem, 0));
addr_rtx = XEXP (XEXP (mem, 0), 1); if (GET_CODE (addr_rtx) == PRE_MODIFY)
else addr_rtx = XEXP (addr_rtx, 1);
addr_rtx = (XEXP (mem, 0));
if (GET_CODE (addr_rtx) == REG) *offset = 0;
{ while (GET_CODE (addr_rtx) == PLUS
*base = addr_rtx; && CONST_INT_P (XEXP (addr_rtx, 1)))
*offset = 0;
}
else if (GET_CODE (addr_rtx) == PLUS
&& CONST_INT_P (XEXP (addr_rtx, 1)))
{ {
*base = XEXP (addr_rtx, 0); *offset += INTVAL (XEXP (addr_rtx, 1));
*offset = INTVAL (XEXP (addr_rtx, 1)); addr_rtx = XEXP (addr_rtx, 0);
} }
else if (!REG_P (addr_rtx))
return false; return false;
*base = addr_rtx;
return true; return true;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment