Browse Source

missing files

Artur K 12 years ago
parent
commit
f131b7e619
5 changed files with 175 additions and 1126 deletions
  1. 44 31
      CMakeLists.txt
  2. 7 7
      include/icode.h
  3. 2 3
      src/dataflow.cpp
  4. 121 1084
      src/idioms.cpp
  5. 1 1
      src/locident.cpp

+ 44 - 31
CMakeLists.txt

@@ -15,39 +15,46 @@ FIND_PACKAGE(Boost)
 llvm_map_components_to_libraries(REQ_LLVM_LIBRARIES jit native mc support)
 INCLUDE_DIRECTORIES(
     include
+    include/idioms
     ${Boost_INCLUDE_DIRS}
     ${LLVM_INCLUDE_DIRS}
 )
 
 set(dcc_SOURCES
-src/dcc.cpp
-src/ast.cpp
-src/backend.cpp
-src/bundle.cpp
-src/chklib.cpp
-src/comwrite.cpp
-src/control.cpp
-src/dataflow.cpp
-src/disassem.cpp
-src/error.cpp
-src/fixwild.cpp
-src/frontend.cpp
-src/graph.cpp
-src/hlicode.cpp
-src/icode.cpp
-src/idioms.cpp
-src/idiom1.cpp
-src/epilogue_idioms.cpp
-src/locident.cpp
-src/parser.cpp
-src/perfhlib.cpp
-src/procs.cpp
-src/proplong.cpp
-src/reducible.cpp
-src/scanner.cpp
-src/symtab.cpp
-src/udm.cpp
-src/BasicBlock.cpp
+    src/dcc.cpp
+    src/ast.cpp
+    src/backend.cpp
+    src/bundle.cpp
+    src/chklib.cpp
+    src/comwrite.cpp
+    src/control.cpp
+    src/dataflow.cpp
+    src/disassem.cpp
+    src/error.cpp
+    src/fixwild.cpp
+    src/frontend.cpp
+    src/graph.cpp
+    src/hlicode.cpp
+    src/icode.cpp
+    src/idioms.cpp
+    src/idioms/idiom1.cpp
+    src/idioms/arith_idioms.cpp
+    src/idioms/call_idioms.cpp
+    src/idioms/epilogue_idioms.cpp
+    src/idioms/mov_idioms.cpp
+    src/idioms/neg_idioms.cpp
+    src/idioms/shift_idioms.cpp
+    src/idioms/xor_idioms.cpp
+    src/locident.cpp
+    src/parser.cpp
+    src/perfhlib.cpp
+    src/procs.cpp
+    src/proplong.cpp
+    src/reducible.cpp
+    src/scanner.cpp
+    src/symtab.cpp
+    src/udm.cpp
+    src/BasicBlock.cpp
 )
 set(dcc_HEADERS
     include/ast.h
@@ -59,9 +66,15 @@ set(dcc_HEADERS
     include/graph.h
     include/hlicode.h
     include/icode.h
-    include/idiom.h
-    include/idiom1.h
-    include/epilogue_idioms.h
+    include/idioms/idiom.h
+    include/idioms/idiom1.h
+    include/idioms/arith_idioms.h
+    include/idioms/call_idioms.h
+    include/idioms/epilogue_idioms.h
+    include/idioms/mov_idioms.h
+    include/idioms/neg_idioms.h
+    include/idioms/shift_idioms.h
+    include/idioms/xor_idioms.h
     include/locident.h
     include/perfhlib.h
     include/scanner.h

+ 7 - 7
include/icode.h

@@ -90,7 +90,7 @@ rBH =       20,
 
 rTMP=       21			/* temp register for DIV/IDIV/MOD	*/
 #define INDEXBASE   22          /* Indexed modes go from INDEXBASE to
-                                   * INDEXBASE+7  */
+    * INDEXBASE+7  */
 };
 /* Byte and Word registers */
 static const char *const byteReg[9]  = {"al", "cl", "dl", "bl",
@@ -361,13 +361,13 @@ struct ICODE
     IC ic;/* intermediate code        */
     int loc_ip; // used by CICodeRec to number ICODEs
 
-    void    ClrLlFlag(dword flag) {ic.ll.flg &= ~flag;}
-    void    SetLlFlag(dword flag) {ic.ll.flg |= flag;}
-    dword   GetLlFlag() {return ic.ll.flg;}
-    bool    isLlFlag(dword flg) {return (ic.ll.flg&flg)!=0;}
+    void  ClrLlFlag(dword flag) {ic.ll.flg &= ~flag;}
+    void  SetLlFlag(dword flag) {ic.ll.flg |= flag;}
+    dword GetLlFlag() {return ic.ll.flg;}
+    bool isLlFlag(dword flg) {return (ic.ll.flg&flg)!=0;}
     llIcode GetLlOpcode() const { return ic.ll.opcode; }
-    dword   GetLlLabel() const { return ic.ll.label;}
-    void    SetImmediateOp(dword dw) {ic.ll.src.SetImmediateOp(dw);}
+    dword  GetLlLabel() const { return ic.ll.label;}
+    void SetImmediateOp(dword dw) {ic.ll.src.SetImmediateOp(dw);}
 
     void writeIntComment(std::ostringstream &s);
     void setRegDU(byte regi, operDu du_in);

+ 2 - 3
src/dataflow.cpp

@@ -344,7 +344,7 @@ void Function::liveRegAnalysis (std::bitset<32> &in_liveOut)
                             ticode.du1.numRegsDef = 1;
                             break;
                         default:
-                            fprintf(stderr,"Function::liveRegAnalysis : Unknow return type\n");
+                            fprintf(stderr,"Function::liveRegAnalysis : Unknown return type %d\n",pcallee->retVal.type);
                         } /*eos*/
 
                         /* Propagate def/use results to calling icode */
@@ -959,8 +959,7 @@ void Function::findExps()
                                             picode->ic.hl.oper.call.proc,
                                             picode->ic.hl.oper.call.args);
                                 ticode->ic.hl.oper.asgn.lhs =
-                                        COND_EXPR::idLong(&localId, DST, ticode,
-                                                          HIGH_FIRST, picode, eDEF, 1);//picode->loc_ip
+                                        COND_EXPR::idLong(&localId, DST, ticode,HIGH_FIRST, picode, eDEF, 1);
                                 ticode->ic.hl.oper.asgn.rhs = exp;
                                 picode->invalidate();
                                 numHlIcodes--;

File diff suppressed because it is too large
+ 121 - 1084
src/idioms.cpp


+ 1 - 1
src/locident.cpp

@@ -141,7 +141,7 @@ Int LOCAL_ID::newLongReg(hlType t, byte regH, byte regL, iICODE ix_)
             (entry.id.longId.l == regL))
         {
             /* Check for occurrence in the list */
-            if (entry.idx.inList(ix_)) //count(
+            if (entry.idx.inList(ix_))
                 return (idx);
             else
             {

Some files were not shown because too many files changed in this diff