Bug 88297 - [9 Regression] Assembler Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
Summary: [9 Regression] Assembler Error: symbol `_Z41__static_initialization_and_destr...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: lto (show other bugs)
Version: 9.0
: P3 normal
Target Milestone: 9.0
Assignee: Not yet assigned to anyone
URL:
Keywords: assemble-failure
Depends on:
Blocks:
 
Reported: 2018-12-01 16:27 UTC by H.J. Lu
Modified: 2018-12-04 17:45 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description H.J. Lu 2018-12-01 16:27:57 UTC
On x86-64, r266692 caused:

g++     -O2 -ffast-math -fwhole-program -flto=jobserver -fuse-linker-plugin -DSPEC_CPU2000_LP64 ggCoverageSolidTexture.o ggPathDielectricMaterial.o ggBox2.o ggBox3.o ggRasterSurfaceTexture.o ggJitterSample1.o ggNRooksSample2.o ggJitterSample2.o ggRGBFPixel.o ggRotatingPinholeCamera.o ggRandomSample2.o ggRandomSample3.o ggSolidNoise2.o ggSolidNoise3.o ggSolidTexture.o ggOakSolidTexture.o ggSpecularMaterial.o ggNA.o ggMaterial.o ggDiffuseMaterial.o ggDielectricMaterial.o ggConductorMaterial.o ggEdgeDiscrepancy.o ggPolishedMaterial.o ggFrameInterpolation.o ggQuaternion.o ggSpline.o ggONB2.o ggONB3.o ggFrame2.o ggFrame3.o ggHMatrix3.o ggSphere.o ggRGBE.o ggGamma.o ggBRDF.o ggDiffuseBRDF.o ggPhongBRDF.o ggPolishedBRDF.o ggCamera.o ggPinholeCamera.o ggThinLensCamera.o ggErr.o ggPixelFilter.o ggTrianglePixelFilter.o ggBoxPixelFilter.o ggFormat.o ggGeometry.o ggHAffineMatrix3.o ggHShearMatrix3.o ggHBoxMatrix3.o ggHPerspectiveMatrix3.o ggHTranslationMatrix3.o ggHRigidBodyMatrix3.o ggHRotationMatrix3.o ggHScaleMatrix3.o ggHPoint3.o ggPoint2.o ggPoint3.o ggOptics.o ggPlane.o ggPolygon.o ggGrayPixel_x.o ggRGBPixel_x.o ggRay2.o ggRay3.o ggBoardFloorSolidTexture.o ggVector2.o ggVector3.o ggString.o ggFineSpectrum.o ggSpectrum.o eon.o eonImageCalculator.o mrObjectRecord.o mrCoarsePixelRenderer.o mrIndirectPixelRenderer.o mrRushmeierPixelRenderer.o mrBruteForcePixelRenderer.o mrKajiyaPixelRenderer.o mrCookPixelRenderer.o mrGrid.o mrScene.o mrCamera.o mrTriangle.o mrFastTriangle.o mrPolygon.o mrXYDisk.o mrXZDisk.o mrYZDisk.o mrPhongAreaXYRectangleLuminaire.o mrPhongAreaXZRectangleLuminaire.o mrPhongAreaYZRectangleLuminaire.o mrEmitter.o mrImposter.o mrLinkedObjects.o mrBox.o mrXCylinder.o mrYCylinder.o mrZCylinder.o mrDiffuseAreaZCylinderLuminaire.o mrDiffuseCosineZCylinderLuminaire.o mrDiffuseVisibleAreaZCylinderLuminaire.o mrXEllipticalCylinder.o mrYEllipticalCylinder.o mrZEllipticalCylinder.o mrSpotAreaXYDiskLuminaire.o mrDiffuseAreaXYRectangleLuminaire.o mrDiffuseAreaXZRectangleLuminaire.o mrDiffuseAreaYZRectangleLuminaire.o mrSurfaceList.o mrDiffuseAreaTriangleLuminaire.o mrDiffuseAreaSphereLuminaire.o mrDiffuseCosineSphereLuminaire.o mrDiffuseSolidAngleSphereLuminaire.o mrShellLuminaire.o mrInstance.o mrMaterial.o mrPhongAreaTriangleLuminaire.o mrSolidTexture.o mrSphere.o mrSurface.o mrSurfaceTexture.o mrXYRectangle.o mrXZRectangle.o mrYZRectangle.o myrand.o     -o eon
/tmp/ccrGLkBy.s: Assembler messages:
/tmp/ccrGLkBy.s:66: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:122: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:178: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:234: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:290: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:346: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:402: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:458: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:514: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:570: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:626: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:682: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:738: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:794: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:850: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:906: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:962: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1028: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1084: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1140: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1199: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1258: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1314: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1370: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1426: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1491: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1547: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1603: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1659: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1718: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1777: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1833: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1889: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:1945: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2001: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2060: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2116: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2172: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2228: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2284: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2340: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2396: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2452: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2508: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2564: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2620: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2676: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:2735: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:4746: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:4817: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:4885: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:4956: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:5037: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:5118: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:5199: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:5280: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:5361: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:5442: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:5523: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
/tmp/ccrGLkBy.s:5604: Error: symbol `_Z41__static_initialization_and_destruction_0ii.constprop.0' is already defined
make[4]: *** [/tmp/ccY4XDm6.mk:2: /tmp/eon.Z6uSqi.ltrans0.ltrans.o] Error 1
make[4]: *** Waiting for unfinished jobs....
lto-wrapper: fatal error: make returned 2 exit status
compilation terminated.
/usr/local/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status

when building 252.eon in SPEC CPU 2000.
Comment 1 Andrew Pinski 2018-12-02 00:38:36 UTC
Can you try to reduce this failure?
Comment 2 Jan Hubicka 2018-12-02 18:29:10 UTC
I am getting same error with profiledbootstrap
../configure --enable-checking=release --prefix=/aux/hubicka/trunk-install/ --disable-werror --with-build-config=bootstrap-lto --disable-plugin

I guess when creating the symbol you want to check if symbol of same name is already in the symbol table and skip it, so clones made at compile/wpa time do not conflict with clones made at ltrans time?

Honza

In function ‘_GLOBAL__I_65535_1_cp_lang.o’:
lto1: note: variable tracking size limit exceeded with -fvar-tracking-assignments, retrying without
/tmp/ccKpcs9g.s: Assembler messages:
/tmp/ccKpcs9g.s:49952: Error: symbol `_ZN2wi3mulI16generic_wide_intI22fixed_wide_int_storageILi128EEEiEENS_13binary_traitsIT_T0_XsrNS_10int_traitsIS6_EE14precision_typeEXsrNS8_IS7_EE14precision_typeEE11result_typeERKS6_RKS7_.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:74607: Error: symbol `_Z10multiple_pILj1ElilEN10if_nonpolyIT1_bXsr15poly_int_traitsIS1_E7is_polyEE4typeERK12poly_int_podIXT_ET0_ES1_PS6_IXT_ET2_E.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:88768: Error: symbol `_ZL19regno_ok_for_base_pj12machine_modeh8rtx_codeS0_.constprop.0' is already defined
/tmp/ccKpcs9g.s:89655: Error: symbol `_ZL17bmp_iter_set_initP15bitmap_iteratorPK11bitmap_headjPj.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:89893: Error: symbol `_ZL17bmp_iter_set_initP15bitmap_iteratorPK11bitmap_headjPj.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:89960: Error: symbol `_ZL17bmp_iter_set_initP15bitmap_iteratorPK11bitmap_headjPj.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:96444: Error: symbol `_ZL17bmp_iter_set_initP15bitmap_iteratorPK11bitmap_headjPj.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:96751: Error: symbol `_ZL19regno_ok_for_base_pj12machine_modeh8rtx_codeS0_.constprop.0' is already defined
/tmp/ccKpcs9g.s:96839: Error: symbol `_ZL17bmp_iter_set_initP15bitmap_iteratorPK11bitmap_headjPj.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:101732: Error: symbol `_ZL15_succ_iter_condP13succ_iteratorPP8rtx_insnS2_PFbP8edge_defS0_E.constprop.0' is already defined
/tmp/ccKpcs9g.s:103133: Error: symbol `_ZL15_succ_iter_condP13succ_iteratorPP8rtx_insnS2_PFbP8edge_defS0_E.constprop.0.cold' is already defined
/tmp/ccKpcs9g.s:114090: Error: symbol `_ZL18make_temp_ssa_nameP9tree_nodeP6gimplePKc.constprop.0' is already defined
/tmp/ccKpcs9g.s:114968: Error: symbol `_ZL17bmp_iter_set_initP15bitmap_iteratorPK11bitmap_headjPj.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:115035: Error: symbol `_ZL18make_temp_ssa_nameP9tree_nodeP6gimplePKc.constprop.0' is already defined
/tmp/ccKpcs9g.s:116035: Error: symbol `_ZL18make_temp_ssa_nameP9tree_nodeP6gimplePKc.constprop.0' is already defined
/tmp/ccKpcs9g.s:116153: Error: symbol `_ZL17bmp_iter_set_initP15bitmap_iteratorPK11bitmap_headjPj.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:117419: Error: symbol `_ZL17bmp_iter_set_initP15bitmap_iteratorPK11bitmap_headjPj.isra.0.constprop.0' is already defined
/tmp/ccKpcs9g.s:140354: Error: symbol `_ZL18make_temp_ssa_nameP9tree_nodeP6gimplePKc.constprop.0' is already defined
Comment 3 Richard Biener 2018-12-03 08:48:51 UTC
So before the patch we were just lucky, right?  When seeing the patches I wondered whether we instead want to add a clone_count member to cgraph_node
(which we could stream) and use that for the .NUM suffix.  We alread have
it (sort-of) if we walk the clones list and do counting, right?
Comment 4 Jan Hubicka 2018-12-03 14:08:34 UTC
Originally we maintained things safe by having the global counter and not using same suffixes (i.e. constprop/wpa etc.) during early, wpa and late optimization, so things did not conflict.

I wonder how the conflict happens here. All the .constprop clones are produced at WPA so we should have counter for those right? I need to take closer look at the patch.

Honza
Comment 5 Michael Ploujnikov 2018-12-03 18:02:31 UTC
(In reply to Richard Biener from comment #3)
> So before the patch we were just lucky, right?  When seeing the patches I
> wondered whether we instead want to add a clone_count member to cgraph_node
> (which we could stream) and use that for the .NUM suffix.  We alread have
> it (sort-of) if we walk the clones list and do counting, right?

But the root of the problem is that multiple different cgraph_nodes share the same name, so even if two or more nodes like that have counters == 0 we would get the same conflict. Unless it's always the case that the additional cgraph_nodes with the same decl name are made as copies of the original one and their counter values are copied as well - I'm not sure if things actually work like that, I'm just guessing...
Comment 6 Jan Hubicka 2018-12-03 18:17:14 UTC
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88297
> 
> --- Comment #5 from michael.ploujnikov at oracle dot com ---
> (In reply to Richard Biener from comment #3)
> > So before the patch we were just lucky, right?  When seeing the patches I
> > wondered whether we instead want to add a clone_count member to cgraph_node
> > (which we could stream) and use that for the .NUM suffix.  We alread have
> > it (sort-of) if we walk the clones list and do counting, right?
> 
> But the root of the problem is that multiple different cgraph_nodes share the
> same name, so even if two or more nodes like that have counters == 0 we would
> get the same conflict. Unless it's always the case that the additional

They are linked together as "transparent aliases". So one node has no
transparent_alias set and other sets it and node->alias_target will get you to
the "master" node.

Honza
Comment 7 plouj 2018-12-04 14:22:43 UTC
Author: plouj
Date: Tue Dec  4 14:22:09 2018
New Revision: 266780

URL: https://gcc.gnu.org/viewcvs?rev=266780&root=gcc&view=rev
Log:
	PR ipa/88297
	* ipa-cp.c (create_specialized_node): Track clone counters by
	node assembler names.
	(ipcp_driver): Change type of clone_num_suffixes key to const
	char*.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/ipa-cp.c
Comment 8 H.J. Lu 2018-12-04 17:45:31 UTC
252.eon in SPEC CPU 2000 builds OK with r266780.