https://llvm.org/bugs/show_bug.cgi?id=24648

            Bug ID: 24648
           Summary: -fvisibility=hidden and -fvisibility-inlines-hidden
                    being ignored
           Product: new-bugs
           Version: 3.6
          Hardware: Other
                OS: other
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: unassignedb...@nondot.org
          Reporter: dx-...@users.sourceforge.net
                CC: llvm-bugs@lists.llvm.org
    Classification: Unclassified

Created attachment 14802
  --> https://llvm.org/bugs/attachment.cgi?id=14802&action=edit
Files required to reproduce bug

If more than one compilation unit defines a structure (but not function) for
internal-only consumption to that unit - and the units use the same name for
the struct - the visibility options given for the unit are being ignored. The
structures will both be visible in the resulting object file for the linker.

When passed to the linker, as a result, only the first unit's copy of the
structure will be used in all function calls relating to that structure
assuming identical struct APIs. I can only hate to think what would happen if
an extra function were present in one struct but not the other as to how
confusing this bug would then become.

Expected result of attached test-case:
.0:3636363636363636:.1:3636363636363636:.2:3636363636363636:.3:3636363636363636:.4:3636363636363636:.5:3636363636363636:.6:3636363636363636:.7:3636363636363636:.8:3636363636363636:.9:3636363636363636:.10:3636363636363636:.11:3636363636363636:.12:3636363636363636:.13:3636363636363636:.14:3636363636363636:.15:3636363636363636:.16:115D5D5D5D5D5D5C:.17:115D5D5D5D5D5D5C:.18:BAB1CB61E1E1E1EB:.19:BAB1CB61E1E1E1EB:.20:850799225F926293:.21:850799225F926293:.22:002855843476C491:.23:DB4F7CAB5B9DEBB7:.24:4EA502478EAC4DE7:.25:8289669AF76D9AC5:.26:1BD7B2BB2469893A:.27:8D98B1B6D36C18B4:.28:D874990310946583:.29:51854BBF0209EBB3:.30:8B3C5594EED682C8:.31:8992A4AD535C67DB:.32:741B59D84DD212FF:.33:271466D04FD59E95:.34:6337022C6CBDA380:.35:6F20EC9AEEE97A85:.36:D2DE6A28DEE03D4E:.37:79438B74E6340A7C:.38:77975CB77134F1B2:.39:DAA31F4B4C8BEFE7:.40:9ECF883A732718BC:.41:C91697C4EE07F55B:.42:95647C8A4809D414:.43:84058A64F1470D3C:.44:00DD35881DCB2ED9:.45:18BBEC39E6490440:.46:E7655329025DA3BE:.47:53293B56BD193AB7:
 
.48:D0D5D248AF960575:.49:2D0B4FA87021F0C0:.50:5EA123211A939DD2:.51:ED0CCFA96C01F804:.52:B38E2DDB27EC1E65:.53:3ECECA30A5E5BE4C:.54:F372E2B24022BFD5:.55:DF82738DA8254AF7:.56:5A4BA8B3B1BE3882:.57:DCF8BBF9FD73FB34:.58:16243856BFDD6668:.59:2CD45C99CB0C1FA4:.60:A9D48A719FDDD773:.61:BEAF0574D573EF8E:.62:DC37223CF9AEA404:.63:D403BBC395775553:.64:BB0A9F31485EA09D:.65:8ACAA568F0FCD6DC:.66:0DD256D7078712E4:.67:229A6F427B066627:.68:525AE7EF2B796B72:.69:2150CAEA329D023B:.70:A0087C75D4203B1C:.71:F49C8BAF2210ED1E:.72:45CFF8AC11595B82:.73:088974F8E6A4B1B7:.74:EEF6AC7E505923D8:.75:F79EE0354BF41C80:.76:EC2F6DAF7848EDE8:.77:06F0AF3C39FB69A3:.78:08C854623BD76871:.79:B5C6E02CC9A38C05

Actual result:
0:0000000036363636:1:0000000036363636:2:0000000036363636:3:0000000036363636:4:0000000036363636:5:0000000036363636:6:0000000036363636:7:0000000036363636:8:0000000036363636:9:0000000036363636:10:0000000036363636:11:0000000036363636:12:0000000036363636:13:0000000036363636:14:0000000036363636:15:0000000036363636:16:000000003163E3E3:17:000000003163E3E3:18:00000000E11539F8:19:00000000E11539F8:20:000000008F8EBD79:21:000000008F8EBD79:22:00000000DCC3A92C:23:00000000D7F156D9:24:00000000F0460653:25:000000007FF4C4A8:26:00000000C2522EFF:27:00000000A7CAE80B:28:00000000FF7CA8BE:29:00000000234E5C2F:30:00000000B6C633B1:31:0000000044CD5AC5:32:00000000C9927CA5:33:000000009D800194:34:000000009E731070:35:000000002F22495C:36:00000000EA9F8311:37:000000005C4E1158:38:0000000050493177:39:00000000A490BA7F:40:00000000BA72C729:41:00000000D531E922:42:00000000E6881044:43:00000000A429BAF9:44:000000003302A795:45:0000000056FBA245:46:00000000372D4E56:47:000000007247FA41:48:00000000E89EA338:49:00000000BD6ABC1F:50:00000
 
000F84B20CE:51:000000004A0B1A6B:52:0000000075432054:53:000000002ADA0E8E:54:000000007C13EF98:55:00000000C9BC9863:56:000000002742A472:57:000000003D9A2849:58:00000000C0C4BFAF:59:00000000F072D8BE:60:000000008ED2B62A:61:0000000003A2CAFB:62:000000008119B504:63:0000000099B97AD0:64:000000009A0BCFE4:65:000000005B0DF9CD:66:00000000A035FE3E:67:000000008AFF9548:68:000000005483F42C:69:00000000A8BFF47F:70:00000000931002E7:71:00000000B21CCF12:72:00000000A336DC68:73:00000000448A9DC0:74:00000000D716DFFB:75:000000004B8D257A:76:000000003097DBA9:77:000000004113836C:78:0000000036949B86:79:0000000018488C64

This code works correctly as expected when passed to MSVC's cl.exe, or GCC's
g++.
Reproduction of Clang results performed on a x86_64 Mac running Mac OSX as well
as a x86_64 PC running Linux. Results are identical.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to