home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #31 / NN_1992_31.iso / spool / gnu / gcc / bug / 3100 < prev    next >
Encoding:
Text File  |  1993-01-02  |  6.7 KB  |  472 lines

  1. Newsgroups: gnu.gcc.bug
  2. Path: sparky!uunet!wupost!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!ai.mit.edu!oran
  3. From: oran@ai.mit.edu (Oran Singer)
  4. Subject: bug for 2.3.3
  5. Message-ID: <9301021614.AA17284@math.tau.ac.il>
  6. Sender: gnulists@ai.mit.edu
  7. Organization: GNUs Not Usenet
  8. Distribution: gnu
  9. Date: Sat, 2 Jan 1993 18:14:55 GMT
  10. Approved: bug-gcc@prep.ai.mit.edu
  11. Lines: 459
  12.  
  13. I am running g++ v.2.3.3 on a sparc with 4.1.2. The following code worked
  14. fine on 2.1, and now the assembler bombs on a redefinition of _try. It was
  15. compiled simply with g++. What follows is the -S output for 2.1 and 2.3.3,
  16. showing the bug in mangling _try correctly, and the output of -g -S for
  17. 2.3.3. (If this helps, the problem goes away under certain circumstances if
  18. the function is a friend of some class).
  19.  
  20. template<class T, class RW_T> T try(T dummy, RW_T dd, int i)
  21. {
  22.     return dummy;    
  23. }
  24.  
  25. void f()
  26. {
  27.     int i,j;
  28.     char c;
  29.     int k=try(i,c,j);
  30. }
  31.  
  32. void g()
  33. {
  34.     int i,j;
  35.     char c;
  36.     char k=try(c,i,j);
  37. }
  38.  
  39. main()
  40. {
  41.     f(); g();
  42. }
  43.  
  44.  
  45.  
  46. for g++ v2.1:
  47.  
  48. gcc2_compiled.:
  49. .text
  50.     .align 4
  51.     .global _f__Fv
  52.     .proc 1
  53. _f__Fv:
  54.     !#PROLOGUE# 0
  55.     save %sp,-128,%sp
  56.     !#PROLOGUE# 1
  57.     ldub [%fp-25],%o0
  58.     sll %o0,24,%o2
  59.     sra %o2,24,%o1
  60.     ld [%fp-20],%o0
  61.     ld [%fp-24],%o2
  62.     call _try__Fici,0
  63.     nop
  64.     st %o0,[%fp-32]
  65.     b,a L2
  66.     b,a L1
  67. L2:
  68. L1:
  69.     ret
  70.     restore
  71.     .align 4
  72.     .global _g__Fv
  73.     .proc 1
  74. _g__Fv:
  75.     !#PROLOGUE# 0
  76.     save %sp,-128,%sp
  77.     !#PROLOGUE# 1
  78.     ldub [%fp-25],%o0
  79.     sll %o0,24,%o2
  80.     sra %o2,24,%o1
  81.     mov %o1,%o0
  82.     ld [%fp-20],%o1
  83.     ld [%fp-24],%o2
  84.     call _try__Fcii,0
  85.     nop
  86.     stb %o0,[%fp-26]
  87.     b,a L4
  88.     b,a L3
  89. L4:
  90. L3:
  91.     ret
  92.     restore
  93.     .align 4
  94.     .global _main
  95.     .proc 1
  96. _main:
  97.     !#PROLOGUE# 0
  98.     save %sp,-136,%sp
  99.     !#PROLOGUE# 1
  100.     call ___main,0
  101.     nop
  102.     call _f__Fv,0
  103.     nop
  104.     call _g__Fv,0
  105.     nop
  106.     mov 0,%i0
  107.     b,a L5
  108.     b,a L5
  109. L5:
  110.     ret
  111.     restore
  112.     .align 4
  113.     .proc 1
  114. _try__Fcii:
  115.     !#PROLOGUE# 0
  116.     save %sp,-112,%sp
  117.     !#PROLOGUE# 1
  118.     stb %i0,[%fp+71]
  119.     st %i1,[%fp+72]
  120.     st %i2,[%fp+76]
  121.     ldub [%fp+71],%o0
  122.     sll %o0,24,%o1
  123.     sra %o1,24,%i0
  124.     b,a L6
  125.     b,a L6
  126.     b,a L7
  127.     b,a L6
  128. L7:
  129. L6:
  130.     ret
  131.     restore
  132.     .align 4
  133.     .proc 1
  134. _try__Fici:
  135.     !#PROLOGUE# 0
  136.     save %sp,-112,%sp
  137.     !#PROLOGUE# 1
  138.     st %i0,[%fp+68]
  139.     stb %i1,[%fp+75]
  140.     st %i2,[%fp+76]
  141.     ld [%fp+68],%i0
  142.     b,a L8
  143.     b,a L8
  144. L8:
  145.     ret
  146.     restore
  147.  
  148.  
  149. ///////////////////////////////////////////////////
  150.  
  151. and for g++ 2.3.3:
  152.  
  153.  
  154. gcc2_compiled.:
  155. .text
  156.     .align 4
  157.     .global _f__Fv
  158.     .proc    020
  159. _f__Fv:
  160.     !#PROLOGUE# 0
  161.     save %sp,-128,%sp
  162.     !#PROLOGUE# 1
  163.     ldub [%fp-25],%o0
  164.     sll %o0,24,%o2
  165.     sra %o2,24,%o1
  166.     ld [%fp-20],%o0
  167.     ld [%fp-24],%o2
  168.     call _try,0
  169.     nop
  170.     st %o0,[%fp-32]
  171.     b L2
  172.     nop
  173.     b L1
  174.     nop
  175. L2:
  176. L1:
  177.     ret
  178.     restore
  179.     .align 4
  180.     .global _g__Fv
  181.     .proc    020
  182. _g__Fv:
  183.     !#PROLOGUE# 0
  184.     save %sp,-128,%sp
  185.     !#PROLOGUE# 1
  186.     ldub [%fp-25],%o0
  187.     sll %o0,24,%o2
  188.     sra %o2,24,%o1
  189.     mov %o1,%o0
  190.     ld [%fp-20],%o1
  191.     ld [%fp-24],%o2
  192.     call _try,0
  193.     nop
  194.     stb %o0,[%fp-26]
  195.     b L4
  196.     nop
  197.     b L3
  198.     nop
  199. L4:
  200. L3:
  201.     ret
  202.     restore
  203.     .align 4
  204.     .global _main
  205.     .proc    04
  206. _main:
  207.     !#PROLOGUE# 0
  208.     save %sp,-136,%sp
  209.     !#PROLOGUE# 1
  210.     call ___main,0
  211.     nop
  212.     call _f__Fv,0
  213.     nop
  214.     call _g__Fv,0
  215.     nop
  216.     mov 0,%i0
  217.     b L5
  218.     nop
  219.     b L5
  220.     nop
  221. L5:
  222.     ret
  223.     restore
  224.     .align 4
  225.     .proc    04
  226. _try:
  227.     !#PROLOGUE# 0
  228.     save %sp,-112,%sp
  229.     !#PROLOGUE# 1
  230.     stb %i0,[%fp+71]
  231.     st %i1,[%fp+72]
  232.     st %i2,[%fp+76]
  233.     ldub [%fp+71],%o0
  234.     sll %o0,24,%o1
  235.     sra %o1,24,%i0
  236.     b L6
  237.     nop
  238.     b L6
  239.     nop
  240.     b L7
  241.     nop
  242.     b L6
  243.     nop
  244. L7:
  245. L6:
  246.     ret
  247.     restore
  248.     .align 4
  249.     .proc    04
  250. _try:
  251.     !#PROLOGUE# 0
  252.     save %sp,-112,%sp
  253.     !#PROLOGUE# 1
  254.     st %i0,[%fp+68]
  255.     stb %i1,[%fp+75]
  256.     st %i2,[%fp+76]
  257.     ld [%fp+68],%i0
  258.     b L8
  259.     nop
  260.     b L8
  261.     nop
  262. L8:
  263.     ret
  264.     restore
  265.  
  266.  
  267. /////////////////////////////////////////////////
  268.  
  269. -g for 2.3.3:
  270.  
  271. gcc2_compiled.:
  272. .stabs "/users/mafia/oran/imagex/",100,0,0,Ltext0
  273. .stabs "gnubug.c",100,0,0,Ltext0
  274. .text
  275. Ltext0:
  276. .stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0
  277. .stabs "char:t2=r2;0;127;",128,0,0,0
  278. .stabs "long int:t3=r1;-2147483648;2147483647;",128,0,0,0
  279. .stabs "unsigned int:t4=r1;0;-1;",128,0,0,0
  280. .stabs "long unsigned int:t5=r1;0;-1;",128,0,0,0
  281. .stabs "short int:t6=r1;-32768;32767;",128,0,0,0
  282. .stabs "long long int:t7=r1;0;-1;",128,0,0,0
  283. .stabs "short unsigned int:t8=r1;0;65535;",128,0,0,0
  284. .stabs "long long unsigned int:t9=r1;0;-1;",128,0,0,0
  285. .stabs "signed char:t10=r1;-128;127;",128,0,0,0
  286. .stabs "unsigned char:t11=r1;0;255;",128,0,0,0
  287. .stabs "float:t12=r1;4;0;",128,0,0,0
  288. .stabs "double:t13=r1;8;0;",128,0,0,0
  289. .stabs "long double:t14=r1;8;0;",128,0,0,0
  290. .stabs "void:t15=15",128,0,0,0
  291. .stabs "unknown type:t16=16",128,0,0,0
  292. .stabs "__wchar_t:t17=r1;0;65535;",128,0,0,0
  293. .stabs "$vtbl_ptr_type:T18=s8delta:6,0,16;index:6,16,16;pfn:19=*15,32,32;delta2:6,32,16;;",128,0,0,0
  294. .stabs "$vtbl_ptr_type:t18",128,0,0,0
  295.     .align 4
  296.     .global _f__Fv
  297.     .proc    020
  298. _f__Fv:
  299. .stabn 68,0,8,LM1
  300. LM1:
  301.     !#PROLOGUE# 0
  302.     save %sp,-128,%sp
  303.     !#PROLOGUE# 1
  304. .stabn 68,0,9,LM2
  305. LM2:
  306. LBB2:
  307. .stabn 68,0,11,LM3
  308. LM3:
  309.     ldub [%fp-25],%o0
  310.     sll %o0,24,%o2
  311.     sra %o2,24,%o1
  312.     ld [%fp-20],%o0
  313.     ld [%fp-24],%o2
  314.     call _try,0
  315.     nop
  316.     st %o0,[%fp-32]
  317. LBE2:
  318.     b L2
  319.     nop
  320.     b L1
  321.     nop
  322. L2:
  323. .stabn 68,0,12,LM4
  324. LM4:
  325. L1:
  326.     ret
  327.     restore
  328. .stabs "f__Fv:F15",36,0,0,_f__Fv
  329. .stabs "i:1",128,0,0,-20
  330. .stabs "j:1",128,0,0,-24
  331. .stabs "c:2",128,0,0,-25
  332. .stabs "k:1",128,0,0,-32
  333. .stabn 192,0,0,LBB2
  334. .stabn 224,0,0,LBE2
  335.     .align 4
  336.     .global _g__Fv
  337.     .proc    020
  338. _g__Fv:
  339. .stabn 68,0,15,LM5
  340. LM5:
  341.     !#PROLOGUE# 0
  342.     save %sp,-128,%sp
  343.     !#PROLOGUE# 1
  344. .stabn 68,0,16,LM6
  345. LM6:
  346. LBB3:
  347. .stabn 68,0,18,LM7
  348. LM7:
  349.     ldub [%fp-25],%o0
  350.     sll %o0,24,%o2
  351.     sra %o2,24,%o1
  352.     mov %o1,%o0
  353.     ld [%fp-20],%o1
  354.     ld [%fp-24],%o2
  355.     call _try,0
  356.     nop
  357.     stb %o0,[%fp-26]
  358. LBE3:
  359.     b L4
  360.     nop
  361.     b L3
  362.     nop
  363. L4:
  364. .stabn 68,0,19,LM8
  365. LM8:
  366. L3:
  367.     ret
  368.     restore
  369. .stabs "g__Fv:F15",36,0,0,_g__Fv
  370. .stabs "i:1",128,0,0,-20
  371. .stabs "j:1",128,0,0,-24
  372. .stabs "c:2",128,0,0,-25
  373. .stabs "k:2",128,0,0,-26
  374. .stabn 192,0,0,LBB3
  375. .stabn 224,0,0,LBE3
  376.     .align 4
  377.     .global _main
  378.     .proc    04
  379. _main:
  380. .stabn 68,0,22,LM9
  381. LM9:
  382.     !#PROLOGUE# 0
  383.     save %sp,-136,%sp
  384.     !#PROLOGUE# 1
  385.     call ___main,0
  386.     nop
  387. .stabn 68,0,23,LM10
  388. LM10:
  389.     call _f__Fv,0
  390.     nop
  391.     call _g__Fv,0
  392.     nop
  393.     mov 0,%i0
  394.     b L5
  395.     nop
  396.     b L5
  397.     nop
  398. .stabn 68,0,24,LM11
  399. LM11:
  400. L5:
  401.     ret
  402.     restore
  403. .stabs "main:F1",36,0,0,_main
  404.     .align 4
  405.     .proc    04
  406. _try:
  407. .stabn 68,0,3,LM12
  408. LM12:
  409.     !#PROLOGUE# 0
  410.     save %sp,-112,%sp
  411.     !#PROLOGUE# 1
  412.     stb %i0,[%fp+71]
  413.     st %i1,[%fp+72]
  414.     st %i2,[%fp+76]
  415. .stabn 68,0,4,LM13
  416. LM13:
  417.     ldub [%fp+71],%o0
  418.     sll %o0,24,%o1
  419.     sra %o1,24,%i0
  420.     b L6
  421.     nop
  422.     b L6
  423.     nop
  424.     b L7
  425.     nop
  426.     b L6
  427.     nop
  428. L7:
  429. .stabn 68,0,5,LM14
  430. LM14:
  431. L6:
  432.     ret
  433.     restore
  434. .stabs "try:f2",36,0,0,_try
  435. .stabs "dummy:p2",160,0,0,71
  436. .stabs "dd:p1",160,0,0,72
  437. .stabs "i:p1",160,0,0,76
  438.     .align 4
  439.     .proc    04
  440. _try:
  441. .stabn 68,0,3,LM15
  442. LM15:
  443.     !#PROLOGUE# 0
  444.     save %sp,-112,%sp
  445.     !#PROLOGUE# 1
  446.     st %i0,[%fp+68]
  447.     stb %i1,[%fp+75]
  448.     st %i2,[%fp+76]
  449. .stabn 68,0,4,LM16
  450. LM16:
  451.     ld [%fp+68],%i0
  452.     b L8
  453.     nop
  454.     b L8
  455.     nop
  456. .stabn 68,0,5,LM17
  457. LM17:
  458. L8:
  459.     ret
  460.     restore
  461. .stabs "try:f1",36,0,0,_try
  462. .stabs "dummy:p1",160,0,0,68
  463. .stabs "dd:p2",160,0,0,75
  464. .stabs "i:p1",160,0,0,76
  465.  
  466.         Oran
  467.  
  468. Oran Singer                   Computer Science Lab
  469. oran@Math.Tau.Ac.IL           School of Mathematics
  470. oran@Taurus.BITNET            Tel Aviv University
  471.  
  472.