Index: trunk/ab5.0/abdev/compiler_x64/Compile_Statement.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x64/Compile_Statement.cpp	(revision 675)
+++ trunk/ab5.0/abdev/compiler_x64/Compile_Statement.cpp	(revision 676)
@@ -124,6 +124,15 @@
 	int reg=REG_RAX;
 	Type resultType;
-	if( !NumOpe(&reg,buffer,Type(DEF_BOOLEAN),resultType) ){
-		return;
+	bool isNeedHeapFreeStructure;
+	if( !NumOpe(&reg,buffer,Type(DEF_BOOLEAN),resultType, &isNeedHeapFreeStructure) ){
+		return;
+	}
+
+	if( resultType.IsObject() )
+	{
+		// Boolean型にキャストする
+		Type booleanType( DEF_BOOLEAN );
+		CallCastOperatorProc( reg, resultType, isNeedHeapFreeStructure, booleanType );
+		resultType = booleanType;
 	}
 
Index: trunk/ab5.0/abdev/compiler_x64/NumOpe.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x64/NumOpe.cpp	(revision 675)
+++ trunk/ab5.0/abdev/compiler_x64/NumOpe.cpp	(revision 676)
@@ -921,5 +921,6 @@
 
 		if(idCalc){
-			if(type_stack[sp-2]==DEF_OBJECT){
+			if( sp>=2 && type_stack[sp-2]==DEF_OBJECT )
+			{
 				if( idCalc == CALC_AS
 					&& type_stack[sp-1] == ( DEF_OBJECT | FLAG_CAST )
