Closed Bug 1560664 (cxx17) Opened 2 years ago Closed 1 year ago

make C++17 our default C++ version

Categories

(Firefox Build System :: General, enhancement)

enhancement
Not set
normal

Tracking

(firefox73 fixed)

RESOLVED FIXED
mozilla73
Tracking Status
firefox73 --- fixed

People

(Reporter: froydnj, Assigned: froydnj)

References

(Blocks 3 open bugs)

Details

Attachments

(1 file)

No description provided.
Depends on: 1560665
Duplicate of this bug: 1566181
No longer depends on: 1560665
Depends on: 1569728
Depends on: 1573733
Depends on: 1577272
Depends on: 1577275
Depends on: 1577319
Depends on: 1577326
Depends on: 1577583
Depends on: 1578876

Current status, with some WIP patches for various open bugs:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=6547a3b1315ef0b6aca230a70fb0481a267fab7e

  • SM sanitizer-related configs are failing in check_vanilla_allocations.py, which is bug 1578876.
  • Base toolchain GCC builds are failing somewhere in balrdash; probably just forgot some compiler flags somewhere?
  • Base toolchain Clang builds are failing because Clang 4.0 doesn't support -std=c++17. I guess we get to bump our minimum clang version?
  • AArch64 Linux builds are failing, this is bug 1578535. Something in our docker image build process isn't installing the right GCC packages.
  • Android 4.0 API16+ pgo builds are apparently failing for reasons I don't understand yet.
Depends on: 1579189
Depends on: 1581941
Depends on: 1584296
Depends on: 1596499
Depends on: 1596547
Depends on: 1596572
Depends on: 1596807

This change does not fully enable C++17, as we still need standard
library support from some platforms.

Will we be able to use C++17 language features already, e.g., constexpr if, fold expressions, etc.?
(Or should we hold off until everything is 17-ready?)

Thank you for making this happen!

(In reply to Gerald Squelart [:gerald] (he/him) (away until 2019-11-17) from comment #4)

Will we be able to use C++17 language features already, e.g., constexpr if, fold expressions, etc.?

Once this lands we should update the list of allowed features to clarify which C++17 features we can use. Our first use-case driving this is constexpr_if.

Pushed by nfroyd@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/9dea219937cd
default to C++17 with optional gnu extensions; r=rstewart

Backed out changeset 9dea219937cd for causing valgrid bustages.

Backout link: https://hg.mozilla.org/integration/autoland/rev/08ddb3b1b528be17ca60d12d743eaf8f366888d5

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&collapsedPushes=598800&searchStr=linux%2Cx64%2Copt%2Cvalgrind-linux64-valgrind%2Fopt%2C%28v%29&fromchange=02b544b1570d9108081db22cf30ee5fee564a807&tochange=08ddb3b1b528be17ca60d12d743eaf8f366888d5

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=279052737&repo=autoland&lineNumber=48889

[task 2019-12-02T14:40:58.813Z] 14:40:58 INFO - 4:50.27 --10442-- REDIR: 0x54c1060 (libstdc++.so.6:operator new(unsigned long)) redirected to 0x4c2ac90 (operator new(unsigned long))
[task 2019-12-02T14:40:58.853Z] 14:40:58 INFO - 4:50.31 --10442-- REDIR: 0x54bf370 (libstdc++.so.6:operator delete(void*)) redirected to 0x4c29ae0 (operator delete(void*))
[task 2019-12-02T14:40:58.854Z] 14:40:58 INFO - 4:50.31 TEST-UNEXPECTED-FAIL | valgrind-test | Mismatched free() / delete / delete [] at operator / deallocate / _M_destroy / _M_dispose
[task 2019-12-02T14:40:58.855Z] 14:40:58 INFO - 4:50.31 ==10442== Mismatched free() / delete / delete []
[task 2019-12-02T14:40:58.855Z] 14:40:58 INFO - 4:50.31 ==10442== at 0x4C29B4C: operator delete(void*)+108 (vg_replace_malloc.c:584)

Flags: needinfo?(nfroyd)
Duplicate of this bug: 1583714

Ah, yes, the difficulty of actually testing everything that gets built on real pushes via mach try fuzzy . Sigh.

This is easily addressed. Fortunately, it looks like everything else might have actually stayed green.

Depends on: 1600771
Flags: needinfo?(nfroyd)
Pushed by nfroyd@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ac19304c1887
default to C++17 with optional gnu extensions; r=rstewart
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla73
Blocks: 1601792
Regressions: 1602514
Regressions: 1614540
You need to log in before you can comment on or make changes to this bug.