If we were willing to bump clang support all the way up to version 9 (a big leap, released 19 September 2019) we would get support for __builtin_LINE and __builtin_FILE, which are there to support std::source_location which is a c++20 feature but which can be used without enabling c++20. That would be really helpful in turning macros which capture file/line information like panic() and warn() into normal functions.
Gabe On Thu, May 13, 2021 at 3:58 PM Gabe Black <gabe.bl...@gmail.com> wrote: > I have no objection to moving the compiler versions up. I don't really > know what benchmark we use to decide when that's ok to do. If we do move > up, it would be nice to move to a version which would let us use c++17. > > For gcc, the oldest version with any support is 5, there seems to be > pretty solid support by version 7, pretty much complete compiler support by > 8, pretty much complete library support by 9, and it's the default version > by 11. If we remove support for 5 and 6, I think that might bring us into > position to use c++17 with 7, and I think if we move to 8 it's pretty safe. > > Version 5.2 was released on July 16, 2015 > Version 7.3 was released on January 25, 2018 > Version 8.1 was released on May 2, 2018 > Version 11.1 was released very recently on April 27, 2021. > > For clang, it seems to be a little more straightforward, and we'd just > need version 5. This was released on 7 September 2017. > > So, with no other data points, I'd vote for updating to gcc version 7.3 > (or just 7+), and clang 5, and then enabling c++17. > > > https://en.cppreference.com/w/cpp/compiler_support/17 > https://www.gnu.org/software/gcc/projects/cxx-status.html#cxx17 > https://clang.llvm.org/cxx_status.html > https://en.wikipedia.org/wiki/Clang#Status_history > https://gcc.gnu.org/releases.html > > On Thu, May 13, 2021 at 1:43 PM Bobby Bruce via gem5-dev < > gem5-dev@gem5.org> wrote: > >> These two patchset should fix most of this: >> https://gem5-review.googlesource.coThism/c/public/gem5/+/45479 >> <https://gem5-review.googlesource.com/c/public/gem5/+/45479>, >> https://gem5-review.googlesource.com/c/public/gem5/+/45481 >> >> Unfortunately, we currently can't compile with GCC 5 as deprecation of >> enum values were only introduced in GCC 6. So this change is problematic: >> https://gem5.googlesource.com/public/gem5/+/6d7c3afcd44843fb93578d63ad1f5401906d17ad/src/sim/aux_vector.hh#100, >> and will continue to break the compilation tests. >> >> Perhaps this is worthy of discussion: how long do we want to continue >> supporting GCC 5? What's our policy here? The GCC 5 and 6 release series >> are no longer supported, but I wouldn't go as far to say these are old >> compilers completely unused in the wider world. >> >> -- >> Dr. Bobby R. Bruce >> Room 3050, >> Kemper Hall, UC Davis >> Davis, >> CA, 95616 >> >> web: https://www.bobbybruce.net >> >> >> On Tue, May 11, 2021 at 11:45 PM jenkins-no-reply--- via gem5-dev < >> gem5-dev@gem5.org> wrote: >> >>> See < >>> https://jenkins.gem5.org/job/compiler-checks/72/display/redirect?page=changes >>> > >>> >>> Changes: >>> >>> [shingarov] arch-power: Fix precedence of register operands >>> >>> [shingarov] arch-power: Add fields for DS form instructions >>> >>> [m] arch-x86: Implement ACPI root tables >>> >>> [m] arch-x86: Add ACPI support for MADT >>> >>> [m] configs: Use MADT in x86 full system simulation >>> >>> [shingarov] arch-power: Refactor load-store instructions >>> >>> [gabe.black] arch,cpu: Rename arch/registers.hh to arch/vecregs.hh. >>> >>> [gabe.black] tests: Delete the nmtest "UnitTest". >>> >>> [gabe.black] tests: Remove the stattest "UnitTest". >>> >>> [gabe.black] misc: Delete the unittest/genini.py script. >>> >>> [gabe.black] scons,tests: Delete support for the UnitTest scons >>> class/function. >>> >>> [gabe.black] arch-x86: Fix x86 build. >>> >>> [gabe.black] arch-x86: Let individual reg uops specialize their >>> arguments. >>> >>> [gabe.black] arch-x86: Factor out duplication in the new RegOp base >>> classes. >>> >>> [gabe.black] arch-x86: Generalize the RegOp operands. >>> >>> [gabe.black] arch-x86: Use the new op bases for memory microops. >>> >>> [gabe.black] arch-x86: Remove static code from debug.isa and fix style. >>> >>> [gabe.black] arch-x86: Use the *Op classes with FP microops. >>> >>> [gabe.black] arch-x86: Use the newly flexible RegOpT to implement the >>> limm uop. >>> >>> [gabe.black] arch-x86: Correct style and use uop args in specop.isa. >>> >>> [gabe.black] arch-x86: Fix style and use uop args in seqop.isa. >>> >>> [gabe.black] arch-x86: Style fixes and use uop args in the media ops. >>> >>> [gabe.black] arch-x86: Use regIdx() instead of creating an InstRegIndex >>> directly. >>> >>> [gabe.black] arch-x86: Eliminate the DependenceTags in registers.hh. >>> >>> [gabe.black] arch-x86: Create a separate type for floating point reg >>> idxs. >>> >>> [gabe.black] arch-x86: Specialize the remaining operand types for uops. >>> >>> [gabe.black] arch: Delete a few unused vector register types/constants. >>> >>> [gabe.black] arch-x86: Make pick, signedPick and merge take indexes >>> directly. >>> >>> [gabe.black] arch-x86: Use the new multiplication helpers in the mul >>> uops. >>> >>> [gabe.black] arch-x86: Move the step division helper out of the ISA desc. >>> >>> [gabe.black] arch-x86: Get rid of the now unused print(Src|Dest)Reg >>> methods. >>> >>> [gabe.black] base: Add macros to mark things as deprecated. >>> >>> [gabe.black] base: Mark the unused DPRINTF_UNCONDITIONAL macro as >>> deprecated. >>> >>> [gabe.black] base,arch,dev,mem: Always compile DPRINTFs, even if they're >>> disabled. >>> >>> [gabe.black] base: Collapse the DTRACE macro in DPRINTF. >>> >>> [gabe.black] base: Simplify the definition of DTRACE. >>> >>> [Giacomo Travaglini] arch-arm: Fix SMM* instructions >>> >>> [gabe.black] base,python: Simplify how we check if a debug flag is >>> enabled. >>> >>> [gabe.black] base: Move TRACING_ON check into Flag::tracing(). >>> >>> [gabe.black] misc: Collapse all uses of DTRACE(x) to Debug::x. >>> >>> [gabe.black] base,arch-sparc: Overhaul the small fenv wrapper in base. >>> >>> [gabe.black] arch-arm: Use src/base/fenv.hh instead of raw fenv.h. >>> >>> [gabe.black] cpu: Delete an unnecessary return in RegId::flatIndex. >>> >>> [gabe.black] arch,cpu: Get rid of is*Reg() methods in RegId. >>> >>> [gabe.black] cpu: Get rid of the unused NumRegClasses constant. >>> >>> [gabe.black] cpu: Get rid of the redundant PhysRegIndex type. >>> >>> [gabe.black] scons,misc: Remove the ability to disable some trivial >>> features. >>> >>> [gabe.black] scons: Pull builder definitions out of SConstruct. >>> >>> [gabe.black] scons: Simplify finding the python lib with ParseConfig. >>> >>> [gabe.black] scons: Update comments in SConstruct. >>> >>> [gabe.black] python: Collapse away the now unused readCommandWithReturn >>> function. >>> >>> [gabe.black] python,scons: Move readCommand and compareVersions into >>> site_scons. >>> >>> [gabe.black] arch-x86: Clean up x86 integer indexes. >>> >>> [gabe.black] arch-x86: Create some infrastructure for x86 microop >>> operands. >>> >>> [gabe.black] arch: Set %(op_idx)s properly when predicated operands are >>> present. >>> >>> [gabe.black] arch-x86: Build source picking into the operands. >>> >>> [gabe.black] dev: Overload swap_bytes, don't specialize the template. >>> >>> [gabe.black] sim: Use type_traits to steer swap_bytes. >>> >>> [gabe.black] base: Move the macros in compiler.hh to a GEM5_ prefix. >>> >>> [gabe.black] misc: Replace M5_VAR_USED with GEM5_VAR_USED. >>> >>> [gabe.black] misc: Replace M5_NODISCARD with GEM5_NO_DISCARD. >>> >>> [gabe.black] misc: Replace M5_FALLTHROUGH with GEM5_FALLTHROUGH. >>> >>> [gabe.black] misc: Replace M5_ATTR_PACKED with GEM5_PACKED. >>> >>> [gabe.black] arch-sparc: Replace M5_NO_INLINE with GEM5_NO_INLINE. >>> >>> [gabe.black] misc: Replace M5_LOCAL and M5_WEAK with GEM5_LOCAL and >>> GEM5_WEAK. >>> >>> [gabe.black] misc: Replace M5_ALIGNED with GEM5_ALIGNED. >>> >>> [gabe.black] misc: Replace M5_UNREACHABLE with GEM5_UNREACHABLE. >>> >>> [gabe.black] base: Replace M5_UNLIKELY with GEM5_UNLIKELY. >>> >>> [gabe.black] misc: Replace M5_FOR_EACH_IN_PACK with >>> GEM5_FOR_EACH_IN_PACK. >>> >>> [gabe.black] misc: Replace M5_CLASS_VAR_USED with GEM5_CLASS_VAR_USED. >>> >>> [gabe.black] sim: Deprecate M5_AT_* constants. >>> >>> [gabe.black] arch: Stop using deprecated M5_AT_* constants. >>> >>> >>> ------------------------------------------ >>> Started by timer >>> Running as SYSTEM >>> Building in workspace <https://jenkins.gem5.org/job/compiler-checks/ws/> >>> Selected Git installation does not exist. Using Default >>> The recommended git tool is: NONE >>> No credentials specified >>> Cloning the remote Git repository >>> Cloning repository https://gem5.googlesource.com/public/gem5 >>> > git init <https://jenkins.gem5.org/job/compiler-checks/ws/> # >>> timeout=10 >>> Fetching upstream changes from https://gem5.googlesource.com/public/gem5 >>> > git --version # timeout=10 >>> > git --version # 'git version 2.25.1' >>> > git fetch --tags --force --progress -- >>> https://gem5.googlesource.com/public/gem5 >>> +refs/heads/*:refs/remotes/origin/* # timeout=10 >>> > git config remote.origin.url >>> https://gem5.googlesource.com/public/gem5 # timeout=10 >>> > git config --add remote.origin.fetch >>> +refs/heads/*:refs/remotes/origin/* # timeout=10 >>> Avoid second fetch >>> > git rev-parse refs/remotes/origin/develop^{commit} # timeout=10 >>> Checking out Revision b1a396bfcfa66e05f28475758edb3e16e53c5047 >>> (refs/remotes/origin/develop) >>> > git config core.sparsecheckout # timeout=10 >>> > git checkout -f b1a396bfcfa66e05f28475758edb3e16e53c5047 # timeout=10 >>> Commit message: "arch: Stop using deprecated M5_AT_* constants." >>> > git rev-list --no-walk 808056ce4e2c56415062e0a455851c1bedc8d9cd # >>> timeout=10 >>> [compiler-checks] $ /bin/sh -xe /tmp/jenkins1137832772359858327.sh >>> + ./util/compiler-tests.sh -j 12 >>> Starting build tests with 'gcc-version-10'... >>> 'gcc-version-10' was found in the comprehensive tests. All ISAs will be >>> built. >>> * Building target 'NULL_MOESI_CMP_directory.opt' with >>> 'gcc-version-10'... >>> Done. >>> * Building target 'NULL_MOESI_CMP_directory.fast' with >>> 'gcc-version-10'... >>> Done. >>> * Building target 'ARM.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'ARM.fast' with 'gcc-version-10'... >>> ! Failed with exit code 2. >>> * Building target 'Garnet_standalone.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'Garnet_standalone.fast' with 'gcc-version-10'... >>> Done. >>> * Building target 'ARM_MESI_Three_Level.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'ARM_MESI_Three_Level.fast' with 'gcc-version-10'... >>> ! Failed with exit code 2. >>> * Building target 'NULL_MOESI_hammer.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'NULL_MOESI_hammer.fast' with 'gcc-version-10'... >>> Done. >>> * Building target 'X86.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'X86.fast' with 'gcc-version-10'... >>> Done. >>> * Building target 'POWER.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'POWER.fast' with 'gcc-version-10'... >>> Done. >>> * Building target 'X86_MOESI_AMD_Base.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'X86_MOESI_AMD_Base.fast' with 'gcc-version-10'... >>> Done. >>> * Building target 'NULL_MOESI_CMP_token.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'NULL_MOESI_CMP_token.fast' with 'gcc-version-10'... >>> Done. >>> * Building target 'RISCV.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'RISCV.fast' with 'gcc-version-10'... >>> Done. >>> * Building target 'GCN3_X86.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'GCN3_X86.fast' with 'gcc-version-10'... >>> ! Failed with exit code 2. >>> * Building target 'MIPS.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'MIPS.fast' with 'gcc-version-10'... >>> Done. >>> * Building target 'NULL_MESI_Two_Level.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'NULL_MESI_Two_Level.fast' with 'gcc-version-10'... >>> Done. >>> * Building target 'SPARC.opt' with 'gcc-version-10'... >>> Done. >>> * Building target 'SPARC.fast' with 'gcc-version-10'... >>> Done. >>> Starting build tests with 'gcc-version-9'... >>> * Building target 'NULL_MOESI_CMP_directory.opt' with >>> 'gcc-version-9'... >>> Done. >>> * Building target 'NULL_MOESI_CMP_directory.fast' with >>> 'gcc-version-9'... >>> Done. >>> Starting build tests with 'gcc-version-8'... >>> * Building target 'NULL_MOESI_hammer.opt' with 'gcc-version-8'... >>> Done. >>> * Building target 'NULL_MOESI_hammer.fast' with 'gcc-version-8'... >>> Done. >>> Starting build tests with 'gcc-version-7'... >>> * Building target 'ARM_MESI_Three_Level.opt' with 'gcc-version-7'... >>> Done. >>> * Building target 'ARM_MESI_Three_Level.fast' with 'gcc-version-7'... >>> ! Failed with exit code 2. >>> Starting build tests with 'gcc-version-6'... >>> * Building target 'ARM.opt' with 'gcc-version-6'... >>> Done. >>> * Building target 'ARM.fast' with 'gcc-version-6'... >>> ! Failed with exit code 2. >>> Starting build tests with 'gcc-version-5'... >>> * Building target 'ARM_MESI_Three_Level.opt' with 'gcc-version-5'... >>> ! Failed with exit code 2. >>> * Building target 'ARM_MESI_Three_Level.fast' with 'gcc-version-5'... >>> ! Failed with exit code 2. >>> Starting build tests with 'clang-version-9'... >>> 'clang-version-9' was found in the comprehensive tests. All ISAs will be >>> built. >>> * Building target 'NULL_MOESI_CMP_token.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'NULL_MOESI_CMP_token.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'POWER.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'POWER.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'NULL_MOESI_hammer.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'NULL_MOESI_hammer.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'NULL_MOESI_CMP_directory.opt' with >>> 'clang-version-9'... >>> Done. >>> * Building target 'NULL_MOESI_CMP_directory.fast' with >>> 'clang-version-9'... >>> Done. >>> * Building target 'SPARC.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'SPARC.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'MIPS.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'MIPS.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'X86.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'X86.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'NULL_MESI_Two_Level.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'NULL_MESI_Two_Level.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'RISCV.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'RISCV.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'ARM.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'ARM.fast' with 'clang-version-9'... >>> ! Failed with exit code 2. >>> * Building target 'GCN3_X86.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'GCN3_X86.fast' with 'clang-version-9'... >>> ! Failed with exit code 2. >>> * Building target 'Garnet_standalone.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'Garnet_standalone.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'X86_MOESI_AMD_Base.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'X86_MOESI_AMD_Base.fast' with 'clang-version-9'... >>> Done. >>> * Building target 'ARM_MESI_Three_Level.opt' with 'clang-version-9'... >>> Done. >>> * Building target 'ARM_MESI_Three_Level.fast' with 'clang-version-9'... >>> ! Failed with exit code 2. >>> Starting build tests with 'clang-version-8'... >>> * Building target 'X86_MOESI_AMD_Base.opt' with 'clang-version-8'... >>> Done. >>> * Building target 'X86_MOESI_AMD_Base.fast' with 'clang-version-8'... >>> Done. >>> Starting build tests with 'clang-version-7'... >>> * Building target 'ARM_MESI_Three_Level.opt' with 'clang-version-7'... >>> Done. >>> * Building target 'ARM_MESI_Three_Level.fast' with 'clang-version-7'... >>> ! Failed with exit code 2. >>> Starting build tests with 'clang-version-6.0'... >>> * Building target 'SPARC.opt' with 'clang-version-6.0'... >>> Done. >>> * Building target 'SPARC.fast' with 'clang-version-6.0'... >>> Done. >>> Starting build tests with 'clang-version-5.0'... >>> * Building target 'X86_MOESI_AMD_Base.opt' with 'clang-version-5.0'... >>> Done. >>> * Building target 'X86_MOESI_AMD_Base.fast' with 'clang-version-5.0'... >>> Done. >>> Starting build tests with 'clang-version-4.0'... >>> * Building target 'NULL_MOESI_hammer.opt' with 'clang-version-4.0'... >>> Done. >>> * Building target 'NULL_MOESI_hammer.fast' with 'clang-version-4.0'... >>> Done. >>> Starting build tests with 'clang-version-3.9'... >>> * Building target 'Garnet_standalone.opt' with 'clang-version-3.9'... >>> Done. >>> * Building target 'Garnet_standalone.fast' with 'clang-version-3.9'... >>> Done. >>> Build step 'Execute shell' marked build as failure >>> Archiving artifacts >>> _______________________________________________ >>> gem5-dev mailing list -- gem5-dev@gem5.org >>> To unsubscribe send an email to gem5-dev-le...@gem5.org >>> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s >>> >> _______________________________________________ >> gem5-dev mailing list -- gem5-dev@gem5.org >> To unsubscribe send an email to gem5-dev-le...@gem5.org >> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s > >
_______________________________________________ gem5-dev mailing list -- gem5-dev@gem5.org To unsubscribe send an email to gem5-dev-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s