Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/MLRISC/sparc/mltree/sparc.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/sparc/mltree/sparc.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 795, Fri Mar 2 19:10:50 2001 UTC revision 796, Tue Mar 6 00:04:33 2001 UTC
# Line 409  Line 409 
409        in  g(mlrisc, C.empty) end        in  g(mlrisc, C.empty) end
410    
411        (* emit a function call *)        (* emit a function call *)
412        and call(a,flow,defs,uses,mem,an) =        and call(a,flow,defs,uses,mem,cutsTo,an) =
413        let val (r,i) = addr a        let val (r,i) = addr a
414            val defs=cellset(defs)            val defs=cellset(defs)
415            val uses=cellset(uses)            val uses=cellset(uses)
416        in  case (C.registerId r,i) of        in  case (C.registerId r,i) of
417              (0,I.LAB(T.LABEL l)) =>              (0,I.LAB(T.LABEL l)) =>
418               mark(I.CALL{label=l,defs=C.addReg(C.linkReg,defs),uses=uses,               mark(I.CALL{label=l,defs=C.addReg(C.linkReg,defs),uses=uses,
419                           mem=mem,nop=true},an)                           cutsTo=cutsTo,mem=mem,nop=true},an)
420            | _ => mark(I.JMPL{r=r,i=i,d=C.linkReg,defs=defs,uses=uses,mem=mem,            | _ => mark(I.JMPL{r=r,i=i,d=C.linkReg,defs=defs,uses=uses,
421                               nop=true},an)                               cutsTo=cutsTo,mem=mem,nop=true},an)
422        end        end
423    
424        (* emit an integer branch instruction *)        (* emit an integer branch instruction *)
# Line 480  Line 480 
480              mark(I.Bicc{b=I.BA,a=true,label=l,nop=false},an)              mark(I.Bicc{b=I.BA,a=true,label=l,nop=false},an)
481          | stmt(T.JMP(e,labs),an) = jmp(e,labs,an)          | stmt(T.JMP(e,labs),an) = jmp(e,labs,an)
482          | stmt(T.CALL{funct,targets,defs,uses,region,...},an) =          | stmt(T.CALL{funct,targets,defs,uses,region,...},an) =
483              call(funct,targets,defs,uses,region,an)              call(funct,targets,defs,uses,region,[],an)
484            | stmt(T.FLOW_TO
485                     (T.CALL{funct,targets,defs,uses,region,...},cutsTo),an) =
486                call(funct,targets,defs,uses,region,cutsTo,an)
487          | stmt(T.RET _,an) = mark(I.RET{leaf=not registerwindow,nop=true},an)          | stmt(T.RET _,an) = mark(I.RET{leaf=not registerwindow,nop=true},an)
488          | stmt(T.STORE(8,a,d,mem),an)   = store(I.STB,a,d,mem,an)          | stmt(T.STORE(8,a,d,mem),an)   = store(I.STB,a,d,mem,an)
489          | stmt(T.STORE(16,a,d,mem),an)  = store(I.STH,a,d,mem,an)          | stmt(T.STORE(16,a,d,mem),an)  = store(I.STH,a,d,mem,an)

Legend:
Removed from v.795  
changed lines
  Added in v.796

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0