On Sun, Jun 22, 2025 at 6:35 AM Max Filippov <jcmvb...@gmail.com> wrote:
>
> On Sat, Jun 21, 2025 at 2:41 PM Max Filippov <jcmvb...@gmail.com> wrote:
> >
> > On Sat, Jun 21, 2025 at 2:12 PM Takayuki 'January June' Suwa
> > <jjsuwa_sys3...@yahoo.co.jp> wrote:
> > >
> > > That hook has since been deprecated
> > > (commit a670ebde3995481225ec62b29686ec07a21e5c10) and has led to incorrect
> > > results on Xtensa:
> > >
> > >      /* example */
> > >      #define <stdint.h>
> > >      uint32_t __attribute__((noinline)) test0(uint32_t a, uint16_t b) {
> > >        return a + b;
> > >      }
> > >      uint32_t __attribute__((noinline)) test1(uint32_t a, uint32_t b) {
> > >        return test0(a, b);
> > >      }
> > >
> > >      ;; before (-mabi=call0)
> > >      test0:
> > >         add.n   a2, a3, a2
> > >         ret.n
> > >      test1:
> > >         sext    a3, a3, 15      ;; NG, do not sign-extend
> > >         j.l     test0, a9
> > >
> > >      ;; after (-mabi=call0)
> > >      test0:
> > >         extui   a3, a3, 0, 16   ;; OK
> > >         add.n   a2, a3, a2
> > >         ret.n
> > >      test1:
> > >         j.l     test0, a9
> > >
> > > With this patch, the result is consistent with other targets such as
> > > AArch64.
> > >
> > > gcc/ChangeLog:
> > >
> > >         * config/xtensa/xtensa.cc
> > >         (TARGET_PROMOTE_PROTOTYPES, TARGET_PROMOTE_FUNCTION_MODE):
> > >         Remove.
> > > ---
> > >   gcc/config/xtensa/xtensa.cc | 5 -----
> > >   1 file changed, 5 deletions(-)
>
> Also with this change function calls that pass 8- and 16-bit signed values
> don't sign-extend them, which violates the xtensa ABI.
>

There are no overages in GCC testsuites for these?


-- 
H.J.

Reply via email to