mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 21:36:06 -04:00
17 KiB
17 KiB
| 1 | # config/dedup_exceptions.tsv — the S1 exception ledger (Phase 35): a byte-identical class with >=2 instances that does NOT share | ||||
|---|---|---|---|---|---|
| 2 | # one source, with the MEASURED reason. Read by tools/share_census.py --check; one row per h_exact class. Reason codes: | ||||
| 3 | # JTBL-CARVE a member's body owns a jump-table carve that the shared form cannot carry | ||||
| 4 | # O0-LOCAL a member lives in a per-binary -O0 split translation unit | ||||
| 5 | # TU-CONFLICT the chosen text is refused by a member's translation unit (a conflicting declaration) | ||||
| 6 | # PARSE-ERROR cc1 reports a parse error at or near the site (a census range defect until a replay proves otherwise) | ||||
| 7 | # SYMBOL-NAME the chosen text names a callee the member's binary does not define under that name (undefined reference at link) | ||||
| 8 | # GATE-REJECT the chosen text compiled but the member's binary did not stay byte-identical (the compiler message class in note) | ||||
| 9 | # PINNED every candidate text carries register pins and sharing would spread them (Phase 36's work) | ||||
| 10 | # CROSS-SPACE instances in different address spaces (deferred with the cross-address classes) | ||||
| 11 | # A row is evidence, not a shrug: note names the tool run and the message. Empty at the phase's open (2026-09-08). | ||||
| 12 | h_exact | reason | nins | instances | note |
| 13 | 47b7d4a04815b9d0fd1b6c329ce7bf8aa985fb10 | TU-CONFLICT | 154 | 141 | share_body extend1: extend of E_func_80144090 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_80144090.h:11: conflicting types for `D_800A651C' |
| 14 | 5fd1ad0684401984d032eb95861c100cf110768a | TU-CONFLICT | 123 | 141 | share_body extend1: extend of E_func_80174CB0 rejected in ['ov_SC01_000', 'ov_SC01_077', 'ov_SC06_018']; cause (ov_SC01_000): src/ov_SC01_000/../shared/ov/func_80174CB0.h:6: conflicting types for `func_80012ABC' |
| 15 | 7e04ee1875d81cff86833b19a385e347632ac616 | TU-CONFLICT | 105 | 141 | share_body extend1: extend of E_func_801749C8 rejected in ['ov_SC01_000', 'ov_SC01_077', 'ov_SC06_018']; cause (ov_SC01_000): src/ov_SC01_000/../shared/ov/func_801749C8.h:7: conflicting types for `func_80012ABC' |
| 16 | 0d18ee0d06ee4ef27cdf46a3ad3f37774f0c7768 | TU-CONFLICT | 99 | 141 | share_body extend1: extend of E_func_80168070 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8012D098.h:65: src/ov_MAIN_012/../shared/ov/func_801430F4.h:15: warning: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a castpassing ar |
| 17 | 0964d4c6581490c9daef5e32a0e6b5fc10fe3136 | TU-CONFLICT | 95 | 141 | share_body extend1: extend of E_func_80168BDC rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_80168BDC.h:5: conflicting types for `ApplyMatrixSV' |
| 18 | 4dd276719f6c975dc6da1c7f08926875dc6518e7 | TU-CONFLICT | 89 | 141 | share_body extend1: extend of E_func_8016986C rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8016986C.h:8: conflicting types for `ApplyMatrixSV' |
| 19 | 238e26f72fd2caf8a3198fa61593abaec604ed92 | TU-CONFLICT | 88 | 141 | share_body extend1: extend of E_func_80169058 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8012D098.h:57: src/ov_MAIN_012/../shared/ov/func_8015DDF0.h:7: warning: warning: passing arg 1 of `func_8012D3B4' makes integer from pointer without a castpassing arg |
| 20 | 5793cdffdeb21282a415e90ae9dbf4c72f189442 | TU-CONFLICT | 85 | 141 | share_body extend1: extend of E_func_8016A8FC rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8015EDA0.h:7: src/ov_MAIN_012/../shared/ov/func_80170374.h:11: warning: warning: passing arg 1 of `func_8015EE7C' makes integer from pointer without a castpassing arg |
| 21 | 225792366f1cd769c96175ef8deb6a8193e18ca0 | TU-CONFLICT | 82 | 141 | share_body extend1: extend of E_func_8014CF04 rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_8014CF04.h:7: conflicting types for `func_8014CF04' |
| 22 | cc6b91ad3dbdd22a8a59ef399283a09a4274fa4e | TU-CONFLICT | 79 | 141 | share_body extend1: extend of E_func_8016D848 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_010', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8016D848.h:16: too few arguments to function `func_80146C3C' |
| 23 | 29e6564223b4ede2b90dec52041cbf05da72fb16 | TU-CONFLICT | 76 | 141 | share_body extend1: extend of E_func_80168D94 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_80168D94.h:5: conflicting types for `ApplyMatrixSV' |
| 24 | c5e872b09551ef8a76630b71f5f059d2a7aeeb9b | TU-CONFLICT | 74 | 141 | share_body extend1: extend of E_func_8012D4B4 rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_801615C4.h:12: src/ov_SC07_006/../shared/ov/func_801758FC.h:6: warning: warning: passing arg 1 of `func_80146D90' makes integer from pointer without a casttype mismat |
| 25 | e2c32e5950747aad0dfdaad42aaba4ff3dc4d644 | TU-CONFLICT | 69 | 141 | share_body extend1: extend of E_func_80169408 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_80147060.h:7: src/ov_MAIN_012/ov_MAIN_012_jr_8016AE5C.c:3595: warning: warning: `return' with a value, in function returning voidprevious external decl of ` |
| 26 | 7921cb4a22e0943444a312753fc16bed5f87f946 | TU-CONFLICT | 68 | 141 | share_body extend1: extend of E_func_80149954 rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_80147AD4.h:8: src/ov_SC07_006/../shared/ov/func_80172D14.h:9: warning: warning: passing arg 2 of `func_80147B5C' makes pointer from integer without a castpassing arg |
| 27 | c56e1eba19b30da8f225c2a6029ea99c00ebd593 | TU-CONFLICT | 64 | 141 | share_body extend1: extend of E_func_8012D3B4 rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_8012D3B4.h:4: conflicting types for `RotTransPers' |
| 28 | 9c43d3fca3b1d3a61823121c4601c25b19c84fb4 | TU-CONFLICT | 60 | 141 | share_body extend1: extend of E_func_8012E688 rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_8012E688.h:6: conflicting types for `RotTransPers' |
| 29 | d62e1dd55726d7830038a5bfd5286d94ad9d7ca4 | TU-CONFLICT | 59 | 141 | share_body extend1: extend of E_func_80173A60 rejected in ['ov_SC01_077']; cause (ov_SC01_077): src/ov_SC01_077/../shared/ov/func_80173A60.h:5: conflicting types for `func_80173B4C' |
| 30 | cca105be1acc941abec77d5b294b55fc387053ff | TU-CONFLICT | 57 | 141 | share_body extend1: extend of E_func_80161124 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8012D098.h:63: src/ov_MAIN_012/../shared/ov/func_8016F4FC.h:9: warning: warning: passing arg 2 of `func_8012D3B4' makes integer from pointer without a castpassing arg |
| 31 | 20aa0ffd5a2dbbda99c0060aefe05cefbc21c2d0 | TU-CONFLICT | 56 | 141 | share_body extend1: extend of E_func_801759D8 rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_8015DA90.h:7: src/ov_SC07_006/ov_SC07_006_jr_8016AE5C.c:3057: warning: warning: passing arg 1 of `func_8015DB6C' makes integer from pointer without a castpassing arg |
| 32 | b5c37d41433827c7ef61568befec086c7d57c193 | TU-CONFLICT | 56 | 141 | share_body extend1: extend of E_func_80168664 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_801463A0.h:15: src/ov_MAIN_012/../shared/ov/func_8016BA68.h:9: warning: warning: type mismatch with previous external declpassing arg 1 of `func_8014C050' makes integ |
| 33 | 75c3bc8284cb157a25989f613fe6dabfbb9a0083 | TU-CONFLICT | 55 | 141 | share_body extend1: extend of E_func_80168F40 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_80168F40.h:4: conflicting types for `D_800AE620' |
| 34 | 7529ad8f17b78ef2f57770ea07d5e53fbb501b5b | GATE-REJECT | 51 | 141 | share_body extend1: extend of E_func_801376E8 rejected in ['ov_SC07_006', 'ov_SC07_007', 'ov_SC07_010', 'ov_SC07_011']; cause (ov_SC07_006): [FAIL] build/ov_SC07_006/ov_SC07_006 |
| 35 | c9866fcb8607c1ad52644c3cc3a0e376138ba72c | TU-CONFLICT | 51 | 141 | share_body extend1: extend of E_func_8012F49C rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_8012D098.h:38: src/ov_SC07_006/ov_SC07_006_jr_80171B4C.c: warning: In function `func_80176218': |
| 36 | dd5bb9d1dc90b09a038f91b06e19bfedddba0e34 | TU-CONFLICT | 50 | 141 | share_body extend1: extend of E_func_80142BB4 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_80142BB4.h:6: conflicting types for `func_8012C098' |
| 37 | 62ab8c1ddf81e7b3724acc9eadaeaeb9daf60331 | TU-CONFLICT | 47 | 141 | share_body extend1: extend of E_func_8012E5CC rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_801412A8.h:5: src/ov_SC07_006/../shared/ov/func_8017248C.h:6: warning: warning: type mismatch with previous external declpassing arg 1 makes pointer from integer with |
| 38 | 05353a788c4a54964478f793f291cb7e4d7e673a | TU-CONFLICT | 40 | 141 | share_body extend1: extend of E_func_8015B858 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8015B858.h:11: too few arguments to function `func_8014A51C' |
| 39 | d63a10fab8ca1851076def4eecccdcfb9ac156aa | TU-CONFLICT | 36 | 141 | share_body extend1: extend of E_func_8012F40C rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_8012F40C.h:5: conflicting types for `RotTransPers' |
| 40 | 9dda58b2de98b9c41639a431f56c05d9b6f988e6 | TU-CONFLICT | 35 | 141 | share_body extend1: extend of E_func_8016829C rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_010', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/ov_MAIN_012_jr_8013F350.c:3086: src/ov_MAIN_012/../shared/ov/func_8012D098.h:65: warning: warning: passing arg 1 of `func_8012C218' makes pointer from integer without a castpassing arg |
| 41 | fbef0f0b65fe008859ef6544482f9326ccbb32c5 | TU-CONFLICT | 35 | 141 | share_body extend1: extend of E_func_801684B4 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_010', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/ov_MAIN_012_jr_801458E0.c:2316: src/ov_MAIN_012/../shared/ov/func_8014462C.h:13: warning: warning: initialization makes pointer from integer without a castpassing arg 1 of `func_80128E |
| 42 | 3ef37ce705e383316c2fa66d57755202e60ab52c | TU-CONFLICT | 32 | 141 | share_body extend1: extend of E_func_8016D984 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_010', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8016D984.h:7: too few arguments to function `func_80146C3C' |
| 43 | 6d45bcfe1c7b0f55f2b08564cc3f657590c04308 | TU-CONFLICT | 31 | 141 | share_body extend1: extend of E_func_80149F2C rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_80149F2C.h:6: conflicting types for `func_8016EDEC' |
| 44 | e0963a4b81c4bccd04dadc1fdf04046f866a7748 | TU-CONFLICT | 30 | 141 | share_body extend1: extend of E_func_8016706C rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_010', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8017044C.h:14: src/ov_MAIN_012/../shared/ov/func_8014C168.h:12: warning: warning: passing arg 1 of `func_80171AB0' makes integer from pointer without a castreturn mak |
| 45 | 0bfaee44dc40e0a726c4b74c5efead7850714de0 | TU-CONFLICT | 29 | 141 | share_body extend1: extend of E_func_8012F274 rejected in ['ov_SC01_077']; cause (ov_SC01_077): src/ov_SC01_077/../shared/ov/func_8012F274.h:8: redefinition of `tail_8012F274' |
| 46 | bd7388526b9898882faa7b7703f36530ade411cd | TU-CONFLICT | 29 | 141 | share_body extend1: extend of E_func_8014CD0C rejected in ['ov_SC07_006']; cause (ov_SC07_006): 'src/ov_SC07_006/../shared/ov/func_8014462C.h:13: |
| 47 | e9c9fa5bf6c5abd75212c7046a34040fce59c605 | TU-CONFLICT | 29 | 141 | share_body extend1: extend of E_func_80165FA4 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8016EE40.h:17: src/ov_MAIN_012/../shared/ov/func_801430F4.h: warning: In function `func_801430F4': |
| 48 | 8e3f8acd470a7013512288ce6789f0fcd9708072 | TU-CONFLICT | 27 | 141 | share_body extend1: extend of E_func_80146F58 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_80146F58.h:6: conflicting types for `ApplyMatrixSV' |
| 49 | f769ff8982ba0db385e1f6f98efdcf55322c569e | TU-CONFLICT | 27 | 141 | share_body extend1: extend of E_func_8013C08C rejected in ['ov_SC01_077']; cause (ov_SC01_077): src/ov_SC01_077/../shared/ov/func_8013C08C.h:6: `E_13C08C_8013C08C' undeclared (first use this function) |
| 50 | 7576525bd5c7942ab08205a61d6a5b650f4f6a6f | TU-CONFLICT | 23 | 141 | share_body extend1: extend of E_func_8014CA14 rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/ov_SC07_006_jr_8016AE5C.c:3726: src/ov_SC07_006/ov_SC07_006_jr_80171B4C.c:3809: warning: warning: passing arg 2 of `ApplyMatrixSV' from incompatible pointer typepassing arg 1 makes int |
| 51 | 1c5bc11f816e9ed71badae45bfb8bee66eef7a77 | TU-CONFLICT | 22 | 141 | share_body extend1: extend of E_func_8016BF50 rejected in ['ov_SC07_006', 'ov_SC07_007', 'ov_SC07_010', 'ov_SC07_011']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_8016BF50.h:6: conflicting types for `func_8016BF50' |
| 52 | 89a42c5ccac1f79d9c58707ac7733a497d015c90 | TU-CONFLICT | 20 | 141 | share_body extend1: extend of E_func_8016E728 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107', 'ov_SC07_006', 'ov_SC07_007', 'ov_SC07_010', 'ov_SC07_011']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8016E728.h:13: too few arguments to function `func_80146C3C' |
| 53 | d50cc5103cf668a20a8885ea3fa49d385921f0c6 | TU-CONFLICT | 20 | 141 | share_body extend1: extend of E_func_80172C50 rejected in ['ov_SC01_077']; cause (ov_SC01_077): src/ov_SC01_077/../shared/ov/func_80172C50.h:4: conflicting types for `func_80172CA0' |
| 54 | 2e065293dab43135fb1cdf3b0257153afdecb9f7 | TU-CONFLICT | 17 | 141 | share_body extend1: extend of E_func_80161BE0 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_80161BE0.h:3: conflicting types for `func_801497A8' |
| 55 | f42005211641291138f94be32ed279a7a5620e75 | TU-CONFLICT | 16 | 141 | share_body extend1: extend of E_func_80147324 rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/../shared/ov/func_80147AD4.h:8: src/ov_SC07_006/ov_SC07_006_jr_8015C32C.c:3322: warning: warning: passing arg 2 of `func_80147B5C' makes pointer from integer without a castpassing arg |
| 56 | 6d5164d17dbed234ada936454d8f02d5ddae4a40 | TU-CONFLICT | 9 | 141 | share_body extend1: extend of E_func_80147300 rejected in ['ov_SC07_006']; cause (ov_SC07_006): src/ov_SC07_006/ov_SC07_006_jr_801457A4.c:1673: conflicting types for `func_80147364' |
| 57 | 0f3f34484ff38f8b177fd5808c3920da6b4ec31c | TU-CONFLICT | 4 | 141 | share_body extend1: extend of E_func_8014CBE8 rejected in ['ov_MAIN_012', 'ov_SC02_037', 'ov_SC03_107']; cause (ov_MAIN_012): src/ov_MAIN_012/../shared/ov/func_8014CBE8.h:3: conflicting types for `D_80126CC4' |
| 58 | 86843ed5657f959adb66e55897f923080d5e9be1 | TU-CONFLICT | 23 | 9 | share_body extend1: extend of E_func_8017D6CC rejected in ['ov_SC02_037']; cause (ov_SC02_037): src/ov_SC02_037/../shared/ov/func_80146D90.h:6: src/ov_SC02_037/../shared/ov/func_8016BA68.h:11: warning: warning: passing arg 1 of `func_80146DE8' makes pointer from integer without a castpassing arg |
| 59 | 3a43941d56d4b1c4f91f53f047f7887fdc66807e | TU-CONFLICT | 21 | 9 | share_body extend1: extend of E_func_8017D588 rejected in ['ov_SC02_037']; cause (ov_SC02_037): src/ov_SC02_037/../shared/ov/func_8017D588__3a43941d.h:4: conflicting types for `func_80146C3C' |
| 60 | 5b6b968251699b8e8314523e396805478a91da13 | TU-CONFLICT | 19 | 9 | share_body extend1: extend of E_func_8017CFE4 rejected in ['ov_SC02_037']; cause (ov_SC02_037): src/ov_SC02_037/../shared/ov/func_8017CFE4__5b6b9682.h:4: conflicting types for `func_80146C3C' |
| 61 | 2e822a8f62d3e77b01a4b40a3fa46a567e3f6d38 | TU-CONFLICT | 65 | 141 | share_body new1: rejected in ['ov_SC07_010']; registered for 140; cause (ov_SC07_010): src/ov_SC07_010/../shared/ov/func_80140D68.h:41: `D_800B9A02' undeclared (first use this function) |
| 62 | 60be554c7030d2012a6daa9d923503674e346272 | TU-CONFLICT | 13 | 3 | share_body new5: rejected in ['ov_SC03_126']; registered for 2; cause (ov_SC03_126): src/ov_SC03_126/../shared/ov/func_8017EF6C__60be554c.h:4: `D_80126942' undeclared (first use this function) |
| 63 | 250070c4bf1c7b79eaa294718f17e9d3eb438a6e | TU-CONFLICT | 38 | 2 | share_body new6: rejected in ['ov_SC04_006']; registered for 1; cause (ov_SC04_006): src/ov_SC04_006/../shared/ov/func_8017D0FC__250070c4.h:4: `D_80126954' undeclared (first use this function) |