Re: riscv: llvm-compiler: calling convention violation: temporary register $t2 is used to pass the ninth function parameter

From: Changbin Du
Date: Thu May 12 2022 - 04:28:36 EST


On Wed, May 11, 2022 at 11:39:07AM -0700, Nick Desaulniers wrote:
> On Mon, May 9, 2022 at 11:54 PM Changbin Du <changbin.du@xxxxxxxxxx> wrote:
> >
[snip]
> > I also built a simple test function with 9 parameters by clang and same cflags,
> > but cannot reproduce it. Maybe it is conditional?
> >
> > Simple test code:
> > __attribute__ ((noinline))
> > void test_func(int *a, int *b, int *c, int *d, int *e, int *f, int *g, int *h, int *i)
> > {
> > printf("__find_rr_leaf: %d\n", *i);
> > }
> >
> > int main(void)
> > {
> > int a,b,c,d,e,f,g,h,i = 100;
> >
> > test_func(&a,&b,&c,&d,&e,&f,&g,&h,&i);
> > return 0;
> > }
>
> Hmm...any chance you could come up with a more concise test case then
> using creduce [0] or cvise [1]?
> [0] https://embed.cs.utah.edu/creduce/
> [1] https://github.com/marxin/cvise
>
>
okay, let me try to reduce the orignal source with creduce.

>
>
> --
> Thanks,
> ~Nick Desaulniers

--
Cheers,
Changbin Du