Unified · Split
| @@ -9,7 +9,12 @@ new(int t, Node *l, Node *r) · 8 unmodified lines | ||
| 9 | 9 | n->op = t; |
| 10 | 10 | n->left = l; |
| 11 | 11 | n->right = r; |
| 12 | − n->lineno = lineno; | |
| 12 | + if(l && t != OGOTO) | |
| 13 | + n->lineno = l->lineno; | |
| 14 | + else if(r) | |
| 15 | + n->lineno = r->lineno; | |
| 16 | + else | |
| 17 | + n->lineno = lineno; | |
| 13 | 18 | newflag = 1; |
| 14 | 19 | return n; |
| 15 | 20 | } |
| @@ -103,7 +108,7 @@ prtree1(Node *n, int d, int f) · 87 unmodified lines | ||
| 103 | 108 | print(" %T", n->type); |
| 104 | 109 | if(n->complex != 0) |
| 105 | 110 | print(" (%d)", n->complex); |
| 106 | − print("\n"); | |
| 111 | + print(" %L\n", n->lineno); | |
| 107 | 112 | if(i & 2) |
| 108 | 113 | prtree1(n->left, d, 1); |
| 109 | 114 | if(i & 1) |
| @@ -1819,7 +1824,7 @@ urk(char *name, int max, int i) · 1709 unmodified lines | ||
| 1819 | 1824 | void |
| 1820 | 1825 | tinit(void) |
| 1821 | 1826 | { |
| 1822 | − int i; | |
| 1827 | + int *ip; | |
| 1823 | 1828 | Init *p; |
| 1824 | 1829 | |
| 1825 | 1830 | for(p=thashinit; p->code >= 0; p++) { |
| @@ -1850,66 +1855,66 @@ tinit(void) · 24 unmodified lines | ||
| 1850 | 1855 | urk("onames", nelem(onames), p->code); |
| 1851 | 1856 | onames[p->code] = p->s; |
| 1852 | 1857 | } |
| 1853 | − for(i=0; typeiinit[i] >= 0; i++) { | |
| 1854 | − urk("typei", nelem(typei), typeiinit[i]); | |
| 1855 | − typei[typeiinit[i]] = 1; | |
| 1858 | + for(ip=typeiinit; *ip>=0; ip++) { | |
| 1859 | + urk("typei", nelem(typei), *ip); | |
| 1860 | + typei[*ip] = 1; | |
| 1856 | 1861 | } |
| 1857 | − for(i=0; typeuinit[i] >= 0; i++) { | |
| 1858 | − urk("typeu", nelem(typeu), typeuinit[i]); | |
| 1859 | − typeu[typeuinit[i]] = 1; | |
| 1862 | + for(ip=typeuinit; *ip>=0; ip++) { | |
| 1863 | + urk("typeu", nelem(typeu), *ip); | |
| 1864 | + typeu[*ip] = 1; | |
| 1860 | 1865 | } |
| 1861 | − for(i=0; typesuvinit[i] >= 0; i++) { | |
| 1862 | − urk("typesuv", nelem(typesuv), typesuvinit[i]); | |
| 1863 | − typesuv[typesuvinit[i]] = 1; | |
| 1866 | + for(ip=typesuvinit; *ip>=0; ip++) { | |
| 1867 | + urk("typesuv", nelem(typesuv), *ip); | |
| 1868 | + typesuv[*ip] = 1; | |
| 1864 | 1869 | } |
| 1865 | − for(i=0; typeilpinit[i] >= 0; i++) { | |
| 1866 | − urk("typeilp", nelem(typeilp), typeilpinit[i]); | |
| 1867 | − typeilp[typeilpinit[i]] = 1; | |
| 1870 | + for(ip=typeilpinit; *ip>=0; ip++) { | |
| 1871 | + urk("typeilp", nelem(typeilp), *ip); | |
| 1872 | + typeilp[*ip] = 1; | |
| 1868 | 1873 | } |
| 1869 | − for(i=0; typechlinit[i] >= 0; i++) { | |
| 1870 | − urk("typechl", nelem(typechl), typechlinit[i]); | |
| 1871 | − typechl[typechlinit[i]] = 1; | |
| 1872 | − typechlv[typechlinit[i]] = 1; | |
| 1873 | − typechlvp[typechlinit[i]] = 1; | |
| 1874 | + for(ip=typechlinit; *ip>=0; ip++) { | |
| 1875 | + urk("typechl", nelem(typechl), *ip); | |
| 1876 | + typechl[*ip] = 1; | |
| 1877 | + typechlv[*ip] = 1; | |
| 1878 | + typechlvp[*ip] = 1; | |
| 1874 | 1879 | } |
| 1875 | − for(i=0; typechlpinit[i] >= 0; i++) { | |
| 1876 | − urk("typechlp", nelem(typechlp), typechlpinit[i]); | |
| 1877 | − typechlp[typechlpinit[i]] = 1; | |
| 1878 | − typechlvp[typechlinit[i]] = 1; | |
| 1880 | + for(ip=typechlpinit; *ip>=0; ip++) { | |
| 1881 | + urk("typechlp", nelem(typechlp), *ip); | |
| 1882 | + typechlp[*ip] = 1; | |
| 1883 | + typechlvp[*ip] = 1; | |
| 1879 | 1884 | } |
| 1880 | − for(i=0; typechlpfdinit[i] >= 0; i++) { | |
| 1881 | − urk("typechlpfd", nelem(typechlpfd), typechlpfdinit[i]); | |
| 1882 | − typechlpfd[typechlpfdinit[i]] = 1; | |
| 1885 | + for(ip=typechlpfdinit; *ip>=0; ip++) { | |
| 1886 | + urk("typechlpfd", nelem(typechlpfd), *ip); | |
| 1887 | + typechlpfd[*ip] = 1; | |
| 1883 | 1888 | } |
| 1884 | − for(i=0; typecinit[i] >= 0; i++) { | |
| 1885 | − urk("typec", nelem(typec), typecinit[i]); | |
| 1886 | − typec[typecinit[i]] = 1; | |
| 1889 | + for(ip=typecinit; *ip>=0; ip++) { | |
| 1890 | + urk("typec", nelem(typec), *ip); | |
| 1891 | + typec[*ip] = 1; | |
| 1887 | 1892 | } |
| 1888 | − for(i=0; typehinit[i] >= 0; i++) { | |
| 1889 | − urk("typeh", nelem(typeh), typehinit[i]); | |
| 1890 | − typeh[typehinit[i]] = 1; | |
| 1893 | + for(ip=typehinit; *ip>=0; ip++) { | |
| 1894 | + urk("typeh", nelem(typeh), *ip); | |
| 1895 | + typeh[*ip] = 1; | |
| 1891 | 1896 | } |
| 1892 | − for(i=0; typeilinit[i] >= 0; i++) { | |
| 1893 | − urk("typeil", nelem(typeil), typeilinit[i]); | |
| 1894 | − typeil[typeilinit[i]] = 1; | |
| 1897 | + for(ip=typeilinit; *ip>=0; ip++) { | |
| 1898 | + urk("typeil", nelem(typeil), *ip); | |
| 1899 | + typeil[*ip] = 1; | |
| 1895 | 1900 | } |
| 1896 | − for(i=0; typevinit[i] >= 0; i++) { | |
| 1897 | − urk("typev", nelem(typev), typevinit[i]); | |
| 1898 | − typev[typevinit[i]] = 1; | |
| 1899 | − typechlv[typevinit[i]] = 1; | |
| 1900 | − typechlvp[typechlinit[i]] = 1; | |
| 1901 | + for(ip=typevinit; *ip>=0; ip++) { | |
| 1902 | + urk("typev", nelem(typev), *ip); | |
| 1903 | + typev[*ip] = 1; | |
| 1904 | + typechlv[*ip] = 1; | |
| 1905 | + typechlvp[*ip] = 1; | |
| 1901 | 1906 | } |
| 1902 | − for(i=0; typefdinit[i] >= 0; i++) { | |
| 1903 | − urk("typefd", nelem(typefd), typefdinit[i]); | |
| 1904 | − typefd[typefdinit[i]] = 1; | |
| 1907 | + for(ip=typefdinit; *ip>=0; ip++) { | |
| 1908 | + urk("typefd", nelem(typefd), *ip); | |
| 1909 | + typefd[*ip] = 1; | |
| 1905 | 1910 | } |
| 1906 | − for(i=0; typeafinit[i] >= 0; i++) { | |
| 1907 | − urk("typeaf", nelem(typeaf), typeafinit[i]); | |
| 1908 | − typeaf[typeafinit[i]] = 1; | |
| 1911 | + for(ip=typeafinit; *ip>=0; ip++) { | |
| 1912 | + urk("typeaf", nelem(typeaf), *ip); | |
| 1913 | + typeaf[*ip] = 1; | |
| 1909 | 1914 | } |
| 1910 | − for(i=0; typesuinit[i] >= 0; i++) { | |
| 1911 | − urk("typesu", nelem(typesu), typesuinit[i]); | |
| 1912 | − typesu[typesuinit[i]] = 1; | |
| 1915 | + for(ip=typesuinit; *ip >= 0; ip++) { | |
| 1916 | + urk("typesu", nelem(typesu), *ip); | |
| 1917 | + typesu[*ip] = 1; | |
| 1913 | 1918 | } |
| 1914 | 1919 | for(p=tasigninit; p->code >= 0; p++) { |
| 1915 | 1920 | urk("tasign", nelem(tasign), p->code); |
| @@ -1943,8 +1948,15 @@ tinit(void) · 27 unmodified lines | ||
| 1943 | 1948 | urk("trel", nelem(trel), p->code); |
| 1944 | 1949 | trel[p->code] = p->value; |
| 1945 | 1950 | } |
| 1951 | + | |
| 1952 | + /* 32-bit defaults */ | |
| 1953 | + typeword = typechlp; | |
| 1954 | + typecmplx = typesuv; | |
| 1946 | 1955 | } |
| 1947 | 1956 | |
| 1957 | +/* | |
| 1958 | + * return 1 if it is impossible to jump into the middle of n. | |
| 1959 | + */ | |
| 1948 | 1960 | static int |
| 1949 | 1961 | deadhead(Node *n, int caseok) |
| 1950 | 1962 | { |