Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
R
riscv-gcc-1
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • lvzhengyang
  • riscv-gcc-1
  • Repository

Switch branch/tag
  • riscv-gcc-1
  • libgcc
  • config
  • arm
  • t-elf
Find file
BlameHistoryPermalink
  • Thomas Preud'homme's avatar
    [ARM] Optimize executable size when using softfloat fmul/dmul · 72e3a529
    Softfloat single precision and double precision floating-point
    multiplication routines in libgcc share some code with the
    floating-point division of their corresponding precision. As the code
    is structured now, this leads to *all* division code being pulled in an
    executable in softfloat mode even if only multiplication is
    performed.
    
    This patch create some new LIB1ASMFUNCS macros to also build files with
    just the multiplication and shared code as weak symbols. By putting
    these earlier in the static library, they can then be picked up when
    only multiplication is used and they are overriden by the global
    definition in the existing file containing both multiplication and
    division code when division is needed.
    
    The patch also removes changes made to the FUNC_START and ARM_FUNC_START
    macros in r218124 since the intent was to put multiplication and
    division code into their own section in a later patch to achieve the
    same size optimization. That approach relied on specific section layout
    to ensure multiplication and division were not too far from the shared
    bit of code in order to the branches to be within range. Due to lack of
    guarantee regarding section layout, in particular with all the
    possibility of linker scripts, this approach was chosen instead. This
    patch keeps the two testcases that were posted by Tony Wang on the mailing
    list to implement this approach and adds a new one.
    
    2018-12-19  Thomas Preud'homme  <thomas.preudhomme@linaro.org>
    
        libgcc/
        * /config/arm/lib1funcs.S (FUNC_START): Remove unused sp_section
        parameter and corresponding code.
        (ARM_FUNC_START): Likewise in both definitions.
        Also update footer comment about condition that need to match with
        gcc/config/arm/elf.h to also include libgcc/config/arm/t-arm.
        * config/arm/ieee754-df.S (muldf3): Also build it if L_arm_muldf3 is
        defined.  Weakly define it in this case.
        * config/arm/ieee754-sf.S (mulsf3): Likewise with L_arm_mulsf3.
        * config/arm/t-elf (LIB1ASMFUNCS): Build _arm_muldf3.o and
        _arm_mulsf3.o before muldiv versions if targeting Thumb-1 only. Add
        comment to keep condition in sync with the one in
        libgcc/config/arm/lib1funcs.S and gcc/config/arm/elf.h.
    
        gcc/
        * config/arm/elf.h: Update comment about condition that need to
        match with libgcc/config/arm/lib1funcs.S to also include
        libgcc/config/arm/t-arm.
        * doc/sourcebuild.texi (output-exists, output-exists-not): Rename
        subsubsection these directives are in to "Check for output files".
        Move scan-symbol to that section and add to it new scan-symbol-not
        directive.
    
    2018-12-19  Tony Wang  <tony.wang@arm.com>
    	    Thomas Preud'homme  <thomas.preudhomme@linaro.org>
    
        gcc/testsuite/
        * lib/lto.exp (lto-execute): Define output_file and testname_with_flags
        to same value as execname.
        (scan-symbol): Move and rename to ...
        * lib/gcc-dg.exp (scan-symbol-common): This.  Adapt into a
        helper function returning true or false if a symbol is present.
        (scan-symbol): New procedure.
        (scan-symbol-not): Likewise.
        * gcc.target/arm/size-optimization-ieee-1.c: New testcase.
        * gcc.target/arm/size-optimization-ieee-2.c: Likewise.
        * gcc.target/arm/size-optimization-ieee-3.c: Likewise.
    
    From-SVN: r267282
    Thomas Preud'homme committed Dec 19, 2018
    72e3a529
t-elf 1.7 KB
Edit