瀏覽代碼

disable analyzer optimizations by default (enable with -D analyzer-optimize)

Simon Krajewski 8 年之前
父節點
當前提交
c4f7f5af16

+ 0 - 2
src/context/common.ml

@@ -499,7 +499,6 @@ module Define = struct
 		| NetworkSandbox
 		| NetVer
 		| NetTarget
-		| NoAnalyzer
 		| NoCompilation
 		| NoCOpt
 		| NoDeprecationWarnings
@@ -595,7 +594,6 @@ module Define = struct
 		| NekoSource -> ("neko_source","Output neko source instead of bytecode")
 		| NekoV1 -> ("neko_v1","Keep Neko 1.x compatibility")
 		| NetworkSandbox -> ("network-sandbox","Use local network sandbox instead of local file access one")
-		| NoAnalyzer -> ("no-analyzer","Disable the static analyzer")
 		| NoCompilation -> ("no-compilation","Disable final compilation for Cs, Cpp and Java")
 		| NoCOpt -> ("no_copt","Disable completion optimization (for debug purposes)")
 		| NoDebug -> ("no_debug","Remove all debug macros from cpp output")

+ 5 - 1
src/optimization/analyzer.ml

@@ -1276,6 +1276,10 @@ module Run = struct
 end
 ;;
 Typecore.analyzer_run_on_expr_ref := (fun com e ->
-	let actx = Run.create_analyzer_context com (AnalyzerConfig.get_base_config com) e in
+	let config = AnalyzerConfig.get_base_config com in
+	(* We always want to optimize because const propagation might be required to obtain
+	   a constant expression for inline field initializations (see issue #4977). *)
+	let config = {config with AnalyzerConfig.optimize = true} in
+	let actx = Run.create_analyzer_context com config e in
 	Run.run_on_expr actx e
 )

+ 1 - 1
src/optimization/analyzerConfig.ml

@@ -84,7 +84,7 @@ let is_ignored meta =
 
 let get_base_config com =
 	{
-		optimize = not (Common.defined com Define.NoAnalyzer);
+		optimize = Common.raw_defined com "analyzer-optimize";
 		const_propagation = not (Common.raw_defined com "analyzer-no-const-propagation");
 		copy_propagation = not (Common.raw_defined com "analyzer-no-copy-propagation");
 		code_motion = Common.raw_defined com "analyzer-code-motion";

+ 1 - 0
tests/optimization/run.hxml

@@ -1,4 +1,5 @@
 -cp src
+-D analyzer-optimize
 -D analyzer-user-var-fusion
 --each
 

+ 1 - 1
tests/unit/compile-each.hxml

@@ -5,6 +5,6 @@
 -resource res1.txt@re/s?!%[]))("'1.txt
 -resource res2.bin@re/s?!%[]))("'1.bin
 -dce full
--D analyzer
+-D analyzer-optimize
 -D analyzer-code-motion
 -D analyzer-user-var-fusion