pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

wip/threadingbuildingblocks: Work around aggressive DSE causing a SEGV under g++.



Module Name:	pkgsrc-wip
Committed By:	Paul Ripke <stix%stix.id.au@localhost>
Pushed By:	stix
Date:		Thu Oct 15 16:14:13 2020 +1100
Changeset:	e590769db450d7d761b4c1b9430669c9f54d03a6

Modified Files:
	threadingbuildingblocks/Makefile

Log Message:
wip/threadingbuildingblocks: Work around aggressive DSE causing a SEGV under g++.

Switch to clang, which doesn't do the aggressive DSE in this case.
The Makefiles aleady assume we're using clang, in any case.
See:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71388

SEGV crash is like (from PrusaSlicer):
    parent=parent@entry=0x0, context=context@entry=0x79966ba4ab40 <tbb::internal::the_dummy_context>)
    at ../../src/tbb/scheduler.cpp:352
    genuine=genuine@entry=true) at ../../src/tbb/scheduler.cpp:99
    m=..., this=0x799632fe7e80) at ../../src/tbb/custom_scheduler.h:55
    at ../../src/tbb/custom_scheduler.h:140

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=e590769db450d7d761b4c1b9430669c9f54d03a6

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 threadingbuildingblocks/Makefile | 9 +++++++++
 1 file changed, 9 insertions(+)

diffs:
diff --git a/threadingbuildingblocks/Makefile b/threadingbuildingblocks/Makefile
index 5460afba6c..75b38f9f1f 100644
--- a/threadingbuildingblocks/Makefile
+++ b/threadingbuildingblocks/Makefile
@@ -20,6 +20,15 @@ USE_TOOLS+=	gmake pax
 BUILD_TARGET=	default
 TEST_TARGET=	test
 
+# Work around old TBB bug, we'll force using clang++, which appears to
+# have less agressive Dead-Store Elimination (DSE).
+# The makefiles already assume we're using clang, and hence fail to pass
+# "-flifetime-dse=1" to g++.
+# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71388
+PKGSRC_COMPILER=	clang
+PKG_CC=			clang
+PKG_CXX=		clang++
+
 .include "../../mk/bsd.prefs.mk"
 
 .if ${OPSYS} == Linux


Home | Main Index | Thread Index | Old Index