Changeset 66 in dev for BasicCompiler32/CParameter.cpp


Ignore:
Timestamp:
Mar 9, 2007, 4:59:13 AM (18 years ago)
Author:
dai_9181
Message:

参照型の整数型パラメータに実数を代入すると「内部エラー」になってしまうバグを修正。
参照型の整数型にリテラル値を直接指定すると「内部エラー」になってしまうバグを修正。
バージョンをβ15にした。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/CParameter.cpp

    r64 r66  
    6666                nCountOfTempObjects++;
    6767
    68                 if( type == DEF_OBJECT ){
     68                if( type != DEF_STRUCT ){
    6969                    //一時参照を作成
    7070
     
    114114                op_call(pSub_free);
    115115            }
    116             else if( types[i2].type == DEF_OBJECT ){
    117                 op_pop( REG_NON );
    118                 op_pop( REG_NON );
    119             }
    120116            else{
    121                 SetError(300,NULL,cp);
    122             }
    123 
     117                if( Is64Type( types[i2].type ) ){
     118                    //pop ... 参照を消す
     119                    //pop ... 上位32ビット
     120                    //pop ... 下位32ビット
     121                    op_add_esp( PTR_SIZE * 3 );
     122                }
     123                else{
     124                    //pop ... 参照を消す
     125                    //pop ... 値を消す
     126                    op_add_esp( PTR_SIZE * 2 );
     127                }
     128            }
    124129        }
    125130    }
     
    363368                    //一時オブジェクトをコピー
    364369
    365                     if( types[i2].type == DEF_OBJECT ){
     370                    if( types[i2].type != DEF_STRUCT ){
    366371                        // 一時参照のための領域を考慮する
    367372                        nCountOfNowTempObjects++;
Note: See TracChangeset for help on using the changeset viewer.