http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59679

--- Comment #4 from nullnilaki at gmail dot com ---
(In reply to Andrew Pinski from comment #1)
> This looks more like a bug in perl sources.  Can you attach the preprocessed
> source for scope.c?
> 
> The big question is how is ARG0_PTR defined?  GCC must be assuming the
> alignment is 64bits for some reason.  This needs the preprocessed source to
> see why the alignment is being done incorrectly.  Maybe ARG0_PTR was
> assigned from a long long pointer. 
> 
> In C, once you assign it to a pointer of bigger alignment and it is not
> aligned, the code is undefined.

Thank you for your reply!

ARG0_PTR is defined in scope.c.
#define ARG0_PTR arg0.any_ptr

and

any_ptr is defined in perl.h.

union any {
    void*       any_ptr;
    I32         any_i32;
    IV          any_iv;
    UV          any_uv;
    long        any_long;
    bool        any_bool;
    void        (*any_dptr) (void*);
    void        (*any_dxptr) (pTHX_ void*);
};

Reply via email to