Bug 258465 - chinese/c2t: fix build with clang 13
Summary: chinese/c2t: fix build with clang 13
Status: New
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Dimitry Andric
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-09-12 20:51 UTC by Dimitry Andric
Modified: 2021-09-16 05:57 UTC (History)
1 user (show)

See Also:


Attachments
chinese/c2t: fix "error: address of register variable requested" (614 bytes, patch)
2021-09-12 20:52 UTC, Dimitry Andric
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Dimitry Andric freebsd_committer 2021-09-12 20:51:54 UTC
During an exp-run for llvm 13 (see bug 258209), it turned out that chinese/c2t fails to build with clang 13:

cc -O2 -pipe  -fstack-protector-strong -fno-strict-aliasing  -DCHINDICT=\"/usr/local/share/chinese/gb/TONEPY.tit\" -c c2t.c
c2t.c:99:3: error: address of register variable requested
  hz[2] = '\0';
  ^~
c2t.c:107:7: error: address of register variable requested
      hz[0] = (char)eka;
      ^~
c2t.c:108:7: error: address of register variable requested
      hz[1] = (char)toka;
      ^~
c2t.c:113:8: error: address of register variable requested
          if (hz[0] != (*pipo)[i] || hz[1] != (*pipo)[i+1]) continue;
              ^~
c2t.c:113:31: error: address of register variable requested
          if (hz[0] != (*pipo)[i] || hz[1] != (*pipo)[i+1]) continue;
                                     ^~
c2t.c:133:36: error: address of register variable requested
                fprintf(miss_chars, "%c", hz[0]);
                                          ^~
c2t.c:134:30: error: address of register variable requested
                fprintf(miss_chars, "%c ", hz[1]);
                                           ^~
c2t.c:143:17: error: address of register variable requested
                        printf("%c", hz[0]);
                                     ^~
c2t.c:144:18: error: address of register variable requested
                        printf("%c ", hz[1]);
                                      ^~
9 errors generated.

As indicated, arrays shouldn't be register variables as they don't have addresses. In general, the register keyword is deprecated and should no longer be used.

To fix this, use a command line flag to define "register" to empty.
Comment 1 Dimitry Andric freebsd_committer 2021-09-12 20:52:32 UTC
Created attachment 227863 [details]
chinese/c2t: fix "error: address of register variable requested"
Comment 2 Fernando Apesteguía freebsd_committer 2021-09-16 05:57:34 UTC
^Triage: Reporter is committer, assign accordingly.