Summary of later additions: devel/powerpc64-gcc has the same problem as gcc7 in this clang-based powerpc64.
My note about using gcc 4.2.1 for the kernel build was wrong. (My 32-bit powerpc builds are that way, not the powerpc64 ones.) On 2017-Sep-29, at 1:51 AM, Mark Millard <markmi at dsl-only.net> wrote: > [Looks like gcc7 might be causing its own problem > via a vec_step macro name in its altivec.h .] > > On 2017-Sep-29, at 1:14 AM, Mark Millard <markmi at dsl-only.net> wrote: > >> I attempted a poudriere based build of some >> ports and the gcc7 build involved failed >> with the following sorts of notices: devel/powerpc64-gcc has the same problem as gcc7 in this clang-based powerpc64 >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3835:27: >> error: expected unqualified-id >> tree new_vec, vec_init, vec_step, t; >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3835:26: >> error: expected ';' at end of declaration >> tree new_vec, vec_init, vec_step, t; >> ^ >> ; >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3983:3: >> error: use of undeclared identifier 't' >> t = unshare_expr (new_name); >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3988:49: >> error: use of undeclared identifier 't' >> new_vec = build_vector_from_val (stepvectype, t); >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:3989:12: >> error: expected expression >> vec_step = vect_init_vector (iv_phi, new_vec, stepvectype, NULL); >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4011:75: >> error: expected expression >> new_stmt = gimple_build_assign (vec_dest, PLUS_EXPR, induc_def, vec_step); >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4048:7: >> error: use of undeclared identifier 't' >> t = unshare_expr (new_name); >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4051:53: >> error: use of undeclared identifier 't' >> new_vec = build_vector_from_val (stepvectype, t); >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4052:16: >> error: expected expression >> vec_step = vect_init_vector (iv_phi, new_vec, stepvectype, NULL); >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:4060:25: >> error: expected expression >> vec_def, vec_step); >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:6327:9: >> error: expected unqualified-id >> tree vec_step = build_vector_from_val (cr_index_vector_type, step); >> ^ >> /wrkdirs/usr/ports/lang/gcc7/work/gcc-7.2.0/gcc/tree-vect-loop.c:6333:36: >> error: expected expression >> create_iv (series_vect, vec_step, NULL_TREE, loop, &incr_gsi, >> ^ >> 50 warnings and 12 errors generated. >> gmake[3]: *** [Makefile:1099: tree-vect-loop.o] Error 1 >> gmake[3]: *** Waiting for unfinished jobs.... >> 42 warnings generated. >> 51 warnings generated. >> 50 warnings generated. >> rm gfortran.pod gcc.pod >> gmake[3]: Leaving directory '/wrkdirs/usr/ports/lang/gcc7/work/.build/gcc' >> gmake[2]: *** [Makefile:4225: all-gcc] Error 2 >> gmake[2]: Leaving directory '/wrkdirs/usr/ports/lang/gcc7/work/.build' >> gmake[1]: *** [Makefile:893: all] Error 2 >> gmake[1]: Leaving directory '/wrkdirs/usr/ports/lang/gcc7/work/.build' >> ===> Compilation failed unexpectedly. >> Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to >> the maintainer. >> *** Error code 1 >> >> Stop. >> make: stopped in /usr/ports/lang/gcc7 >> =>> Cleaning up wrkdir >> ===> Cleaning for gcc7-7.2.0_1 >> build of lang/gcc7 | gcc7-7.2.0_1 ended at Fri Sep 29 00:22:00 PDT 2017 >> build time: 00:29:27 >> !!! build failure encountered !!! > > Turns out that there is: > > # grep -r "\<vec_step\>" ~/poudriere_failure/lang_gcc7/ | more > . . . > /root/poudriere_failure/lang_gcc7/work/gcc-7.2.0/gcc/config/rs6000/altivec.h:/* > Given the vec_step of a type, return the corresponding bool type. */ > /root/poudriere_failure/lang_gcc7/work/gcc-7.2.0/gcc/config/rs6000/altivec.h:typename > __altivec_bool_ret <vec_step (T)>::__ret \ > /root/poudriere_failure/lang_gcc7/work/gcc-7.2.0/gcc/config/rs6000/altivec.h: > to #define vec_step to __builtin_vec_step. */ > /root/poudriere_failure/lang_gcc7/work/gcc-7.2.0/gcc/config/rs6000/altivec.h:#define > vec_step(x) __builtin_vec_step (* (__typeof__ (x) *) 0) > . . . > > ( config/s390/vecintrin.h has something similar.) > > > >> FYI: >> >> # grep -r "\<vec_step\>" /usr/src/* | more >> /usr/src/contrib/llvm/tools/clang/lib/AST/ASTDumper.cpp: OS << " >> vec_step"; >> /usr/src/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp: OS << >> "vec_step"; >> /usr/src/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp:/// >> VisitUnaryExprOrTypeTraitExpr - Evaluate a sizeof, alignof or vec_step with >> /usr/src/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp: // The >> vec_step built-in functions that take a 3-component >> /usr/src/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp: >> "cannot yet mangle vec_step expression"); >> /usr/src/contrib/llvm/tools/clang/lib/Headers/opencl-c.h: * by >> vec_step(gentypem). The shuffle mask operand >> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp: case >> tok::kw_vec_step: // unary-expression: OpenCL 'vec_step' expression >> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:/// vec_step and >> we are at the start of an expression or a parenthesized >> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:/// [OpenCL 1.1 >> 6.11.12] vec_step built-in function: >> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:/// >> vec_step ( expressions ) >> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp:/// >> vec_step ( type-name ) >> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp: "Not a >> typeof/sizeof/alignof/vec_step expression!"); >> /usr/src/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp: "Not a >> sizeof/alignof/vec_step expression!"); >> /usr/src/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp: // [OpenCL 1.1 >> 6.11.12] "The vec_step built-in function takes a built-in >> /usr/src/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h: /// \brief >> Build a new sizeof, alignof or vec_step expression with a >> /usr/src/contrib/llvm/tools/clang/include/clang/AST/Expr.h:/// vec_step >> (OpenCL 1.1 6.11.12). >> /usr/src/contrib/llvm/tools/clang/include/clang/ASTMatchers/ASTMatchers.h:/// >> \brief Matches sizeof (C99), alignof (C++11) and vec_step (OpenCL) >> /usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td: >> "invalid application of '%select{sizeof|alignof|vec_step}0' to a " >> /usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td: >> "invalid application of '%select{sizeof|alignof|vec_step}0' to a void " >> /usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td: >> "invalid application of >> '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to a >> void type">; >> /usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td: >> "invalid application of >> '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to an " >> /usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td: >> "invalid application of >> '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to a " >> /usr/src/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td: >> "'vec_step' requires built-in scalar or vector type, %0 invalid">; >> /usr/src/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def:KEYWORD(vec_step >> , KEYOPENCL|KEYALTIVEC|KEYZVECTOR) >> /usr/src/contrib/gcc/config/rs6000/altivec.h:/* Given the vec_step of a >> type, return the corresponding bool type. */ >> /usr/src/contrib/gcc/config/rs6000/altivec.h:typename __altivec_bool_ret >> <vec_step (T)>::__ret \ >> /usr/src/contrib/gcc/config/rs6000/altivec.h: to #define vec_step to >> __builtin_vec_step. */ >> /usr/src/contrib/gcc/config/rs6000/altivec.h:#define vec_step(x) >> __builtin_vec_step (* (__typeof__ (x) *) 0) >> /usr/src/contrib/gcc/ChangeLog-2002: * config/rs6000/altivec.h >> (vec_step): Remove extraneous >> /usr/src/contrib/gcc/ChangeLog-2002: (vec_step): Implement for C++. >> >> >> Context: >> >> # uname -apKU >> FreeBSD FBSDG5L 12.0-CURRENT FreeBSD 12.0-CURRENT r324071M powerpc >> powerpc64 1200047 1200047 >> >> Built via amd64 -> powerpc64 cross build, using clang >> for buildworld: >> >> [Note: The kernel was built with gcc 4.2.1 .] Wrong: I was thinking of the powerpc (32- bit) build when I wrote that. powerpc64 is a pure clang based build. >> >> # poudriere jail -l >> JAILNAME VERSION ARCH METHOD TIMESTAMP PATH >> FBSDpowerpc64 12.0-CURRENT powerpc.powerpc64 null 2017-09-28 20:55:01 >> /usr/obj/DESTDIRs/clang-powerpc64-installworld_altbinutils-poud >> >> (It is using /usr/src .) >> >> # poudriere ports -l >> PORTSTREE METHOD TIMESTAMP PATH >> default null 2017-09-28 17:04:57 /usr/ports >> >> >> # more >> ~/src.configs/src.conf.powerpc64-clang_altbinutils-bootstrap.amd64-host >> TO_TYPE=powerpc64 >> TOOLS_TO_TYPE=${TO_TYPE} >> VERSION_CONTEXT=12.0 >> # >> KERNCONF=GENERIC64vtsc-NODBG >> TARGET=powerpc >> .if ${.MAKE.LEVEL} == 0 >> TARGET_ARCH=${TO_TYPE} >> .export TARGET_ARCH >> .endif >> # >> WITH_CROSS_COMPILER= >> WITHOUT_SYSTEM_COMPILER= >> # >> WITH_LIBCPLUSPLUS= >> WITHOUT_BINUTILS_BOOTSTRAP= >> WITH_ELFTOOLCHAIN_BOOTSTRAP= >> WITH_CLANG_BOOTSTRAP= >> WITH_CLANG= >> WITH_CLANG_IS_CC= >> WITH_CLANG_FULL= >> WITH_CLANG_EXTRAS= >> WITHOUT_LLD_BOOTSTRAP= >> WITH_LLD= >> WITHOUT_LLD_IS_LD= >> WITH_LLDB= >> # >> WITH_BOOT= >> WITH_LIB32= >> # >> WITHOUT_GCC_BOOTSTRAP= >> WITHOUT_GCC= >> WITHOUT_GCC_IS_CC= >> WITHOUT_GNUCXX= >> # >> NO_WERROR= >> MALLOC_PRODUCTION= >> # >> # Avoid converts between pointers to integer types with different sign >> [-Werror,-Wpointer-sign] >> # and such from blocking the build. >> WERROR= >> # >> WITH_REPRODUCIBLE_BUILD= >> WITH_DEBUG_FILES= >> # >> # >> # For TO (so-called "cross") stages . . . >> # So-called-cross via ${TO_TYPE}-xtoolchain-gcc/${TO_TYPE}-gcc. . . >> # TOOLS_TO_TYPE based on ${TO_TYPE}-xtoolchain-gcc related binutils. . . >> # >> CROSS_BINUTILS_PREFIX=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ >> .if ${.MAKE.LEVEL} == 0 >> # >> # Note: The WITH_CROSS_COMPILER picks up the CROSS_BINUTILS_PREFIX >> # binding automatically. >> # >> XAS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/as >> XAR=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ar >> XNM=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/nm >> XOBJCOPY=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objcopy >> XOBJDUMP=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/objdump >> XRANLIB=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ranlib >> XSIZE=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/size >> #NO-SUCH: XSTRINGS=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/strings >> XSTRINGS=/usr/local/bin/${TOOLS_TO_TYPE}-freebsd-strings >> .export XAS >> .export XAR >> .export XNM >> .export XOBJCOPY >> .export XOBJDUMP >> .export XRANLIB >> .export XSIZE >> .export XSTRINGS >> XLD=/usr/local/${TOOLS_TO_TYPE}-freebsd/bin/ld >> .export XLD >> .endif >> >> # svnlite status /usr/src/ | sort >> ? /usr/src/sys/amd64/conf/GENERIC-DBG >> ? /usr/src/sys/amd64/conf/GENERIC-NODBG >> ? /usr/src/sys/arm/conf/GENERIC-DBG >> ? /usr/src/sys/arm/conf/GENERIC-NODBG >> ? /usr/src/sys/arm64/conf/GENERIC-DBG >> ? /usr/src/sys/arm64/conf/GENERIC-NODBG >> ? /usr/src/sys/powerpc/conf/GENERIC64vtsc-DBG >> ? /usr/src/sys/powerpc/conf/GENERIC64vtsc-NODBG >> ? /usr/src/sys/powerpc/conf/GENERICvtsc-DBG >> ? /usr/src/sys/powerpc/conf/GENERICvtsc-NODBG >> M /usr/src/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp >> M /usr/src/contrib/llvm/tools/lld/ELF/Arch/PPC64.cpp >> M /usr/src/crypto/openssl/crypto/armcap.c >> M /usr/src/lib/Makefile >> M /usr/src/lib/libkvm/kvm_powerpc.c >> M /usr/src/lib/libkvm/kvm_private.c >> M /usr/src/sys/arm64/arm64/identcpu.c >> M /usr/src/sys/arm64/arm64/mp_machdep.c >> M /usr/src/sys/boot/ofw/Makefile.inc >> M /usr/src/sys/boot/powerpc/Makefile.inc >> M /usr/src/sys/boot/powerpc/boot1.chrp/Makefile >> M /usr/src/sys/boot/powerpc/kboot/Makefile >> M /usr/src/sys/boot/uboot/Makefile.inc >> M /usr/src/sys/conf/kmod.mk >> M /usr/src/sys/conf/ldscript.powerpc >> M /usr/src/sys/ddb/db_main.c >> M /usr/src/sys/ddb/db_script.c >> M /usr/src/sys/kern/subr_pcpu.c >> M /usr/src/sys/powerpc/aim/mmu_oea64.c >> M /usr/src/sys/powerpc/ofw/ofw_machdep.c >> M /usr/src/sys/powerpc/powerpc/interrupt.c >> M /usr/src/sys/powerpc/powerpc/mp_machdep.c >> M /usr/src/sys/powerpc/powerpc/trap.c >> >> >> >> # svnlite info /usr/ports/ | grep "Re[plv]" >> Relative URL: ^/head >> Repository Root: svn://svn0.us-west.freebsd.org/ports >> Repository UUID: 35697150-7ecd-e111-bb59-0022644237b5 >> Revision: 450478 >> Last Changed Rev: 450478 >> >> # svnlite status /usr/ports >> M /usr/ports/Mk/bsd.port.mk >> M /usr/ports/Mk/bsd.qt.mk >> M /usr/ports/audio/liba52/Makefile >> M /usr/ports/base/gcc/Makefile >> M /usr/ports/base/gcc/distinfo >> M /usr/ports/base/gcc/pkg-plist >> M /usr/ports/devel/libunwind/Makefile >> ? /usr/ports/devel/qt5/files/extrapatch-config.tests_unix_arch.test >> M /usr/ports/lang/gcc7/Makefile >> M /usr/ports/sysutils/cdrdao/Makefile >> ? >> /usr/ports/www/qt5-webkit/files/patch-Source_JavaScriptCore_assembler_ARMAssembler.h >> ? >> /usr/ports/www/qt5-webkit/files/patch-Source_JavaScriptCore_assembler_ARMv7Assembler.h >> ? >> /usr/ports/www/qt5-webkit/files/patch-Source_JavaScriptCore_offlineasm_arm.rb >> ? /usr/ports/www/qt5-webkit/files/patch-Source_WTF_wtf_Platform.h >> ? >> /usr/ports/www/qt5-webkit/files/patch-Source_WebCore_platform_graphics_cpu_arm_filters_FELightingNEON.cpp >> ? >> /usr/ports/www/qt5-webkit/files/patch-Source_bmalloc_bmalloc_BPlatform.h >> >> >> # more /usr/local/etc/poudriere.d/make.conf >> WANT_QT_VERBOSE_CONFIGURE=1 >> # >> DEFAULT_VERSIONS+=perl5=5.24 gcc=7 >> # >> # From a local /usr/ports/Mk/bsd.port.mk extension: >> ALLOW_OPTIMIZATIONS_FOR_WITH_DEBUG= >> # >> .if ${.CURDIR:M*/devel/llvm*} >> #WITH_DEBUG= >> .elif ${.CURDIR:M*/www/qt5-webkit*} >> #WITH_DEBUG= >> .else >> WITH_DEBUG= >> .endif >> MALLOC_PRODUCTION= >> # >> # The system clang for TARGET_ARCH=powerpc64 >> # and the system binutils (such as ld) do not >> # (yet?) mix well. So for ports use the >> # devel/binutils ones. (A problem before >> # they are already in place!) >> #USE_BINUTILS= >> CFLAGS+=-B${LOCALBASE}/bin/ >> CXXFLAGS+=-B${LOCALBASE}/bin/ >> CPPFLAGS+=-B${LOCALBASE}/bin/ >> >> >> # svnlite diff /usr/ports/Mk/bsd.port.mk >> Index: /usr/ports/Mk/bsd.port.mk >> =================================================================== >> --- /usr/ports/Mk/bsd.port.mk (revision 450478) >> +++ /usr/ports/Mk/bsd.port.mk (working copy) >> @@ -1130,12 +1130,12 @@ >> >> # Get the operating system type >> .if !defined(OPSYS) >> -OPSYS!= ${UNAME} -s >> +OPSYS!= echo FreeBSD >> .endif >> _EXPORTED_VARS+= OPSYS >> >> .if !defined(_OSRELEASE) >> -_OSRELEASE!= ${UNAME} -r >> +_OSRELEASE!= echo 12.0-CURRENT >> .endif >> _EXPORTED_VARS+= _OSRELEASE >> >> @@ -1651,7 +1651,11 @@ >> STRIP_CMD= ${TRUE} >> .endif >> DEBUG_FLAGS?= -g >> +.if defined(ALLOW_OPTIMIZATIONS_FOR_WITH_DEBUG) >> +CFLAGS:= ${CFLAGS} ${DEBUG_FLAGS} >> +.else >> CFLAGS:= ${CFLAGS:N-O*:N-fno-strict*} ${DEBUG_FLAGS} >> +.endif >> .if defined(INSTALL_TARGET) >> INSTALL_TARGET:= ${INSTALL_TARGET:S/^install-strip$/install/g} >> .endif >> >> >> (Note: I've had problems with some ${UNAME} use returning empty strings, >> which is why I've used echo as a replacement in places. The real point >> for the above is the ALLOW_OPTIMIZATIONS_FOR_WITH_DEBUG use.) === Mark Millard markmi at dsl-only.net _______________________________________________ freebsd-toolchain@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"