Mike Stump <[email protected]> writes:
> @@ -643,12 +653,14 @@ equality. */
> __FUNCTION__); \
> &_rtx->u.hwint[_n]; }))
>
> -#define XHWIVEC_ELT(HWIVEC, I) __extension__ \
> -(*({ __typeof (HWIVEC) const _hwivec = (HWIVEC); const int _i = (I); \
> - if (_i < 0 || _i >= HWI_GET_NUM_ELEM (_hwivec)) \
> - hwivec_check_failed_bounds (_hwivec, _i, __FILE__, __LINE__, \
> - __FUNCTION__); \
> - &_hwivec->elem[_i]; }))
> +#define CWI_ELT(RTX, I) __extension__
> \
> +(*({ __typeof (RTX) const _rtx = (RTX);
> \
> + int _max = CWI_GET_NUM_ELEM (_rtx); \
CWI_GET_NUM_ELEM also uses "_rtx" for its temporary variable, so the
last line includes the equivalent of:
__typeof (_rtx) _rtx = _rtx;
Is the fix below OK? We do a similar thing for block symbols, etc.
Thanks,
Richard
Index: gcc/rtl.h
===================================================================
--- gcc/rtl.h 2013-09-01 14:00:21.032885857 +0100
+++ gcc/rtl.h 2013-09-01 17:41:49.474023618 +0100
@@ -654,13 +654,13 @@ #define XWINT(RTX, N) __extension__
&_rtx->u.hwint[_n]; }))
#define CWI_ELT(RTX, I) __extension__ \
-(*({ __typeof (RTX) const _rtx = (RTX);
\
- int _max = CWI_GET_NUM_ELEM (_rtx); \
+(*({ __typeof (RTX) const _cwi = (RTX);
\
+ int _max = CWI_GET_NUM_ELEM (_cwi); \
const int _i = (I); \
if (_i < 0 || _i >= _max) \
- cwi_check_failed_bounds (_rtx, _i, __FILE__, __LINE__, \
+ cwi_check_failed_bounds (_cwi, _i, __FILE__, __LINE__, \
__FUNCTION__); \
- &_rtx->u.hwiv.elem[_i]; }))
+ &_cwi->u.hwiv.elem[_i]; }))
#define XCWINT(RTX, N, C) __extension__
\
(*({ __typeof (RTX) const _rtx = (RTX);
\