Show
Ignore:
Timestamp:
07/02/09 09:58:01 (5 months ago)
Author:
buntinas
Message:

squashed more warnings

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • mpich2/trunk/src/mpid/ch3/channels/nemesis/nemesis/include/mpid_nem_impl.h

    r4707 r4888  
    105105    MPID_nem_pkt_lmt_cookie_t lmt_cookie; 
    106106} MPIDI_CH3_nem_pkt_t; 
     107 
     108 
     109/* MPID_PKT_DECL_CAST(pkt_u_var, s_pkt_type, s_pkt_p_var) 
     110   To avoid strict aliasing warnings when doing something like: 
     111       pkt_t upkt; 
     112       rts_pkt_t * const rts_pkt = (rts_pkt_t *)&upkt; 
     113   this macro does the same but through a union. 
     114 
     115   pkt_u_var -- variable name of the packet union 
     116   s_pkt_type -- type of the sub-packet 
     117   s_pkt_p_var -- variable name of the sub-packet pointer 
     118 */ 
     119#define MPID_PKT_DECL_CAST(pkt_u_var, s_pkt_type, s_pkt_p_var)  \ 
     120    union                                                       \ 
     121    {                                                           \ 
     122        MPIDI_CH3_Pkt_t p;                                      \ 
     123        s_pkt_type s;                                           \ 
     124    } pkt_u_var;                                                \ 
     125    s_pkt_type * const s_pkt_p_var = &pkt_u_var.s 
    107126 
    108127     
     
    153172 
    154173#define MPID_nem_lmt_send_CTS(vc, rreq, r_cookie_buf, r_cookie_len) do {                                \ 
    155         MPIDI_CH3_Pkt_t _upkt;                                                                          \ 
    156         MPID_nem_pkt_lmt_cts_t * const _cts_pkt = (MPID_nem_pkt_lmt_cts_t *)&_upkt;                     \ 
     174        MPID_PKT_DECL_CAST(_upkt, MPID_nem_pkt_lmt_cts_t, _cts_pkt);                                    \ 
    157175        MPID_Request *_cts_req;                                                                         \ 
    158176        MPID_IOV _iov[2];                                                                               \ 
     
    187205{ 
    188206    int mpi_errno = MPI_SUCCESS; 
    189     MPIDI_CH3_Pkt_t _upkt; 
    190     MPID_nem_pkt_lmt_cookie_t * const cookie_pkt = (MPID_nem_pkt_lmt_cookie_t *)&_upkt; 
     207    MPID_PKT_DECL_CAST(_upkt, MPID_nem_pkt_lmt_cookie_t, cookie_pkt); 
    191208    MPID_Request *cookie_req; 
    192209    MPID_IOV iov[2]; 
     
    232249         
    233250#define MPID_nem_lmt_send_DONE(vc, rreq) do {                                                                   \ 
    234         MPIDI_CH3_Pkt_t _upkt;                                                                                  \ 
    235         MPID_nem_pkt_lmt_done_t * const _done_pkt = (MPID_nem_pkt_lmt_done_t *)&_upkt;                          \ 
     251        MPID_PKT_DECL_CAST(_upkt, MPID_nem_pkt_lmt_done_t, _done_pkt);                                          \ 
    236252        MPID_Request *_done_req;                                                                                \ 
    237253                                                                                                                \ 
     
    240256        _done_pkt->req_id = (rreq)->ch.lmt_req_id;                                                              \ 
    241257                                                                                                                \ 
    242         mpi_errno = MPIDI_CH3_iStartMsg((vc), _done_pkt, sizeof(*_done_pkt), &_done_req);                        \ 
     258        mpi_errno = MPIDI_CH3_iStartMsg((vc), _done_pkt, sizeof(*_done_pkt), &_done_req);                       \ 
    243259        MPIU_ERR_CHKANDJUMP(mpi_errno, mpi_errno, MPI_ERR_OTHER, "**donepkt");                                  \ 
    244260        if (_done_req != NULL)                                                                                  \