Exemple #1
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)
        {
            var dce = new DeadCodeElimination();

            builder.AddBasicOptimizations(contextFlags);
            builder.Add(dce);
            builder.Add(new SSAConstruction());
            builder.Add(dce);
            builder.Add(new InferAddressSpaces());
        }
Exemple #2
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)
        {
            var dce = new DeadCodeElimination();

            builder.AddBasicOptimizations(contextFlags);
            builder.Add(dce);
            builder.Add(new SSAConstruction());
            builder.Add(new LowerStructures());
            builder.Add(dce);
            builder.Add(new IfConversion(IfConversionFlags.Default));
            builder.Add(dce);
            builder.Add(new SimplifyControlFlow());
            builder.Add(new InferAddressSpaces());
        }