Mike Stump <mikest...@comcast.net> 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); \