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