-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Compiler internal error] error: insn does not satisfy its constraints #29
Comments
m68k-amigaos-gcc -noixemul -Os -mcrt=nix13 -fbaserel -m68000 -msmall-code -o foo *.c is the actual command that brings the error. Without -Os no internal error (but a lot of linker errors) |
This would result in lea 2(d2),a1 which is indeed invalid. And yes, it's a different issue. |
|
I removed the attempt to combin the moved insn with the previous one. Now this code:
is correctly converted to:
|
Ummm, doesn't commits get propagated to https://github.com/bebbo/amigaos-cross-toolchain ? |
https://github.com/bebbo/amigaos-cross-toolchain is frozen Please use https://github.com/bebbo/amiga-gcc.
you may export PREFIX=/what/u/want to specify your prefix. |
Ok, internal error fixed. The linker errors are "normal"? |
what errors? |
m68k-amigaos-gcc -noixemul -Os -mcrt=nix13 -fbaserel -m68000 -msmall-code -o foo *.c
|
You must specify only one of
|
Oh, thanks didn't know that. It compiles with -mcrt=nix13 but if you run it you get nothing. This gives output This does not give any output (Just type foo in an amigashell) |
Hm, libnix is not well tested for kickstart 13. Please open a ticket there. |
Thanks, will do. |
it's related to -msmall-code. The linker does not adjust the entry points for the INIT_LIST properly. => instead of calling __initcommandline, the instrcution befor this function is called which is a jump to quit_cleanup... |
pushed a fix to binutils |
Umm, works on a1200. Crashes on a500 (guru 0000 0004) |
As I wrote, libnix is not well prepared for kick13... ... e.g using AllocVec... which is kick2.0+ |
Hmmm, it uses constructs like that
|
Makefile.in in nix13 directory has the following line Shouldn't that define something like KICKSTART=33 also? |
I once started working on it, it's not finished and it's a libnix issue. |
I tried defining KICKSTART=34 in Makefile.in. It goes into the build/xxx/Makefile and I have planted a syntax error inside the "if defined" thing, but everything builds fine. So the "if defined" is not true for some reason. |
There is more todo... |
We established this is libnix. Closing this. |
Hi all, We noticed that calls to the vadcq and vsbcq intrinsics, both of which use __builtin_arm_set_fpscr_nzcvqc to set the Carry flag in the FPSCR, would produce the following code: ``` < r2 is the *carry input > vmrs r3, FPSCR_nzcvqc bic r3, r3, #536870912 orr r3, r3, r2, lsl #29 vmsr FPSCR_nzcvqc, r3 ``` when the MVE ACLE instead gives a different instruction sequence of: ``` < Rt is the *carry input > VMRS Rs,FPSCR_nzcvqc BFI Rs,Rt,#29,#1 VMSR FPSCR_nzcvqc,Rs ``` the bic + orr pair is slower and it's also wrong, because, if the *carry input is greater than 1, then we risk overwriting the top two bits of the FPSCR register (the N and Z flags). This turned out to be a problem in the header file and the solution was to simply add a `& 1x0u` to the `*carry` input: then the compiler knows that we only care about the lowest bit and can optimise to a BFI. Ok for trunk? Thanks, Stam Markianos-Wright gcc/ChangeLog: * config/arm/arm_mve.h (__arm_vadcq_s32): Fix arithmetic. (__arm_vadcq_u32): Likewise. (__arm_vadcq_m_s32): Likewise. (__arm_vadcq_m_u32): Likewise. (__arm_vsbcq_s32): Likewise. (__arm_vsbcq_u32): Likewise. (__arm_vsbcq_m_s32): Likewise. (__arm_vsbcq_m_u32): Likewise. * config/arm/mve.md (get_fpscr_nzcvqc): Make unspec_volatile. gcc/testsuite/ChangeLog: * gcc.target/arm/mve/mve_vadcq_vsbcq_fpscr_overwrite.c: New.
Looks like bebbo/amigaos-cross-toolchain#34 but I think it's a different error.
git clone https://github.com/alexalkis/a68k
m68k-amigaos-gcc -mcrt=nix13 -fbaserel -m68000 -msmall-code -o foo *.c
The text was updated successfully, but these errors were encountered: