Beispiel #1
0
 /// <summary>
 /// Populates the given transformation manager with O1 optimizations.
 /// </summary>
 /// <param name="builder">The transformation manager to populate.</param>
 /// <param name="inliningMode">The inlining mode to use.</param>
 public static void AddO1Optimizations(
     this Transformer.Builder builder,
     InliningMode inliningMode)
 {
     builder.AddBasicOptimizations(inliningMode);
     builder.AddStructureOptimizations();
     builder.AddLoopOptimizations();
     builder.AddConditionalOptimizations();
     builder.AddAddressSpaceOptimizations();
 }
Beispiel #2
0
 /// <summary>
 /// Populates the given transformation manager with O1 optimizations.
 /// </summary>
 /// <param name="builder">The transformation manager to populate.</param>
 /// <param name="contextFlags">The context flags.</param>
 public static void AddO1Optimizations(
     this Transformer.Builder builder,
     ContextFlags contextFlags)
 {
     builder.AddBasicOptimizations(contextFlags);
     builder.AddStructureOptimizations();
     builder.AddLoopOptimizations();
     builder.AddConditionalOptimizations();
     builder.AddAddressSpaceOptimizations();
 }
Beispiel #3
0
        /// <summary>
        /// Populates the given transformation manager with O2 optimizations.
        /// </summary>
        /// <param name="builder">The transformation manager to populate.</param>
        /// <param name="inliningMode">The inlining mode to use.</param>
        public static void AddO2Optimizations(
            this Transformer.Builder builder,
            InliningMode inliningMode)
        {
            builder.AddBasicOptimizations(inliningMode);
            builder.AddStructureOptimizations();
            builder.AddLoopOptimizations();

            // Append experimental if-condition conversion pass
            builder.Add(new IfConditionConversion());
            // Remove all temporarily generated values that are no longer required
            builder.Add(new DeadCodeElimination());

            builder.AddConditionalOptimizations();
            builder.AddAddressSpaceOptimizations();
        }
Beispiel #4
0
        /// <summary>
        /// Populates the given transformation manager with O2 optimizations.
        /// </summary>
        /// <param name="builder">The transformation manager to populate.</param>
        /// <param name="contextFlags">The context flags.</param>
        public static void AddO2Optimizations(
            this Transformer.Builder builder,
            ContextFlags contextFlags)
        {
            builder.AddBasicOptimizations(contextFlags);
            builder.AddStructureOptimizations();
            builder.AddLoopOptimizations();

            // Converts local memory arrays into structure values
            builder.Add(new SSAStructureConstruction());
            // Append experimental if-condition conversion pass
            builder.Add(new IfConditionConversion());
            // Remove all temporarily generated values that are no longer required
            builder.Add(new DeadCodeElimination());

            builder.AddConditionalOptimizations();
            builder.AddAddressSpaceOptimizations();
        }