aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2023-10-10Bump GCC to 13.2.0Christoph Müllner1-0/+0
This commit bumps GCC from 12.2.0 to 13.2.0 and adjusts the allowlist accordingly (for glibc and newlib multilib builds). Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
2022-09-20Bump gcc branch to 12.2 release. (#1128)2022.09.21Jiawei1-0/+0
* Bump gcc branch to 12.2 release. * Adjust line style in allowlist
2022-08-18Switch gcc to upstream and update binutils commitsJiawei1-0/+0
2016-07-11Move to submodules for GCC, glibcPalmer Dabbelt32-9679/+0
2016-05-22gcc: increase threshold for RV32 inline copiesAndrew Waterman1-1/+1
2016-05-21gcc: improve code generation for -mcmodel=medanyAndrew Waterman2-8/+16
We weren't using the global addressing peepholes.
2016-05-02Update GCC to 6.1.0Palmer Dabbelt4-28/+31
In addition to some small changes, here's the bigger ones: * gen_rtx_SET no longer takes a VOIDmode, apparently that was the only valid argument in that position so it's been dropped. * GEN_CALL is now gen_call. * The #defines in riscv.h need to be defined to 1, not just defined, since they're now used in "if ()" statements. * glibc is passed "--disable-werror", since the new GCC throws a bunch of pointless errors like "misleading indentation". This is all in upstream glibc code.
2016-04-18gcc: remove extraneous printfAndrew Waterman1-1/+0
2016-02-19gcc: define __riscv32 when 32-bitAndrew Waterman1-1/+4
2016-02-09gcc: define __RISCVEL__, not _RISCVELAndrew Waterman1-1/+1
I screwed up a couple commits back.
2016-02-09libgcc: add __multi3 routineAndrew Waterman5-1/+62
2016-02-09gcc: clean up built-in macrosAndrew Waterman1-35/+12
2016-01-04Actually support MEMMODEL_SYNC_*Palmer Dabbelt1-1/+6
I didn't properly check for changes required to support MEMMODEL_SYNC_*, this looks like the last one I need to make (based on git grep). The rationale is the same as the previous one.
2015-12-27Print a bit before failing on invalid memory modelsPalmer Dabbelt1-1/+4
This way we'll be able to see what memory model is being passed, in case someone has another problem with additional memory models in the future.
2015-12-27Bump GCC to 5.3.0Palmer Dabbelt1-0/+3
There was one change required here: support for "MEMMODEL_SYNC_*". This very long GCC post <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65697> talks about the formalization of the C++ memory model. It looks like this is it to allow for some ARM stupidity where they can speculatively issue some memory operations. As far as I can tell, the right thing to do here is to just treat the SYNC versions the same as the non-SYNC versions -- this is the same thing ia64 and rs600 do. I can't find "MEMMODEL_SYNC" anywhere else interesting, so there might be some flag to set to avoid doing this, but I couldn't find it.
2015-12-14replace shift istruction with and instructuction in __mulsi3Joel Vandergriendt1-2/+2
An andi instruction is faster on implementations with 1bit per cycle shifter units.
2015-12-10gcc: make LRA the only register allocatorAndrew Waterman2-11/+1
LRA is the new register allocator, replacing the complicated reload pass. It's a much better design, and it seems likely that it will ultimately replace reload altogether. Rather than contending with the vagaries of both schemes, I think we should abandon reload altogether. For RISC-V, LRA seems to have a mixed performance impact, but it will get better over time.
2015-12-10gcc: miscellaneous simplifications and improvementsAndrew Waterman4-183/+44
2015-12-10gcc: "Fix" RV32D integer <> fp moves (#98)Andrew Waterman1-0/+11
We have no pattern for moving between a double-precision floating-point register and an integer register in RV32. This makes the compiler choke. This workaround raises the cost of those moves significantly. This has no effect on -O0, which always worked; the other -Ox all seem to work now. For obvious reasons, this makes me very uncomfortable. But, as far as I can tell, MIPS is relying on the same behavior. If this bug rears its head again, no big deal: we can add an "instruction" for this, which does something like addi sp, sp, -16 fsd f4, 0(sp) lw x6, 0(sp) lw x7, 4(sp) addi sp, sp, 16 This is heinous, but it's always correct. If the cost model is right, the compiler will only very rarely invoke it, so the performance cost of this ingorious hack will be hidden. @palmer-dabbelt
2015-11-20gcc: fix (?) emission of reg = (float1 != float2)Andrew Waterman1-10/+8
The codegen is crappy since it can't be scheduled, but at least it's not broken like the split was.
2015-11-20gcc: clean up md attributesAndrew Waterman1-22/+7
2015-11-19gcc: simplify cost model (fixes #75)Andrew Waterman3-109/+31
2015-11-18gcc: improve codegen for reg = (float1 != float2);Andrew Waterman2-8/+12
2015-11-16gcc: add peephole to optimize indexing with uint32Andrew Waterman1-0/+21
2015-11-16fix some whitespace errorsAndrew Waterman1-8/+8
2015-11-06Merge pull request #99 from zizztux/newlib-multilibPalmer Dabbelt1-2/+2
gcc: re-organize multilib hierarchy for newlib gcc.
2015-11-06fix build failure for linux multilib.SeungRyeol Lee1-1/+1
2015-11-03gcc: re-organize multilib hierarchy for newlib gcc.SeungRyeol Lee1-2/+2
Fix 1st-level hierarchy to 64/32 not soft-float. It is same with glibc gcc, also.
2015-10-26gcc: don't enable -msave-restore by default for -OsAndrew Waterman1-1/+0
It's still flaky with respect to DWARF and so should be considered experimental.
2015-10-05binutils: yet more work towards RVC 1.8Andrew Waterman1-1/+1
2015-09-29gcc: enable fdiv/fsqrt by defaultAndrew Waterman1-1/+5
2015-09-27gcc: obviate potential buffer overflowAndrew Waterman1-1/+1
2015-09-20gcc: pass m[no-]rvc, m{soft|hard}-float to assemblerAndrew Waterman1-1/+2
2015-09-20gcc: prioritize allocation of RVC-friendly registersAndrew Waterman1-0/+15
2015-09-08gcc: use LI, not MV, to zero a GPRAndrew Waterman1-31/+28
2015-09-08gcc: suppress compiler warningAndrew Waterman1-1/+2
2015-09-08gcc: favor FPRs f8-f15 for better RVC code densityAndrew Waterman1-1/+1
2015-09-03gcc: remove dependence on ISA constants fileAndrew Waterman5-1527/+40
2015-09-03gcc: #define __riscv_compressed when -mrvc passedAndrew Waterman1-10/+13
Also, fix some whitespace errors.
2015-09-02Fix C++ exception regressionAndrew Waterman1-10/+10
We were generating incorrect DWARF frame info. This seems to resolve #85.
2015-07-22Avoid t0 for indirect callsAndrew Waterman3-6/+12
We sometimes use t0 as a link register, e.g. for the compressed prologues and epilogues, and so we want microarchitectures to push the RAS when rd=t0 and pop the RAS when rs1=t0. Thus, we want to avoid using t0 for indirect calls to avoid errant RAS operations.
2015-07-06gcc: for -Os, avoid sibcalls when they hurt code sizeAndrew Waterman1-1/+21
2015-07-06gcc: only use save/restore routines if they don't increase stack usageAndrew Waterman1-33/+37
When a function clobbers only s0 and s1, but not ra, we don't want to use the save/restore routines because the stack would grow more than needed.
2015-07-06Make GCC pass through non-standard ISA stringsPalmer Dabbelt1-0/+6
This simply stops GCC's parse whenever it sees an 'X' in an ISA string. This is the best I can do until some clarafications are made to the RISC-V user spec that allows ISA extensions to be parsed.
2015-07-05gcc: add experimental support for compressed prologues/epiloguesAndrew Waterman9-39/+373
These call library routines to save and restore the callee-saved registers and link register.
2015-06-25gcc: accept --with-arch configure flagAndrew Waterman1-0/+1
2015-06-25gcc: merge libgcc makefiles for linux/elf targetsAndrew Waterman2-3/+0
2015-05-27binutils: complete implementation of RVC v1.7 draftAndrew Waterman1-23/+110
2015-05-27gcc: add experimental -mrvc flag to enable RVCAndrew Waterman3-1/+10
2015-05-09binutils: update to privileged architecture 1.7Andrew Waterman1-32/+98