| 113 | Transformation::~Transformation() = default; |
| 114 | |
| 115 | std::unique_ptr<Transformation> Transformation::FromMessage( |
| 116 | const protobufs::Transformation& message) { |
| 117 | switch (message.transformation_case()) { |
| 118 | case protobufs::Transformation::TransformationCase::kAccessChain: |
| 119 | return MakeUnique<TransformationAccessChain>(message.access_chain()); |
| 120 | case protobufs::Transformation::TransformationCase:: |
| 121 | kAddBitInstructionSynonym: |
| 122 | return MakeUnique<TransformationAddBitInstructionSynonym>( |
| 123 | message.add_bit_instruction_synonym()); |
| 124 | case protobufs::Transformation::TransformationCase::kAddConstantBoolean: |
| 125 | return MakeUnique<TransformationAddConstantBoolean>( |
| 126 | message.add_constant_boolean()); |
| 127 | case protobufs::Transformation::TransformationCase::kAddConstantComposite: |
| 128 | return MakeUnique<TransformationAddConstantComposite>( |
| 129 | message.add_constant_composite()); |
| 130 | case protobufs::Transformation::TransformationCase::kAddConstantNull: |
| 131 | return MakeUnique<TransformationAddConstantNull>( |
| 132 | message.add_constant_null()); |
| 133 | case protobufs::Transformation::TransformationCase::kAddConstantScalar: |
| 134 | return MakeUnique<TransformationAddConstantScalar>( |
| 135 | message.add_constant_scalar()); |
| 136 | case protobufs::Transformation::TransformationCase::kAddCopyMemory: |
| 137 | return MakeUnique<TransformationAddCopyMemory>(message.add_copy_memory()); |
| 138 | case protobufs::Transformation::TransformationCase::kAddDeadBlock: |
| 139 | return MakeUnique<TransformationAddDeadBlock>(message.add_dead_block()); |
| 140 | case protobufs::Transformation::TransformationCase::kAddDeadBreak: |
| 141 | return MakeUnique<TransformationAddDeadBreak>(message.add_dead_break()); |
| 142 | case protobufs::Transformation::TransformationCase::kAddDeadContinue: |
| 143 | return MakeUnique<TransformationAddDeadContinue>( |
| 144 | message.add_dead_continue()); |
| 145 | case protobufs::Transformation::TransformationCase:: |
| 146 | kAddEarlyTerminatorWrapper: |
| 147 | return MakeUnique<TransformationAddEarlyTerminatorWrapper>( |
| 148 | message.add_early_terminator_wrapper()); |
| 149 | case protobufs::Transformation::TransformationCase::kAddFunction: |
| 150 | return MakeUnique<TransformationAddFunction>(message.add_function()); |
| 151 | case protobufs::Transformation::TransformationCase::kAddGlobalUndef: |
| 152 | return MakeUnique<TransformationAddGlobalUndef>( |
| 153 | message.add_global_undef()); |
| 154 | case protobufs::Transformation::TransformationCase::kAddGlobalVariable: |
| 155 | return MakeUnique<TransformationAddGlobalVariable>( |
| 156 | message.add_global_variable()); |
| 157 | case protobufs::Transformation::TransformationCase:: |
| 158 | kAddImageSampleUnusedComponents: |
| 159 | return MakeUnique<TransformationAddImageSampleUnusedComponents>( |
| 160 | message.add_image_sample_unused_components()); |
| 161 | case protobufs::Transformation::TransformationCase::kAddLocalVariable: |
| 162 | return MakeUnique<TransformationAddLocalVariable>( |
| 163 | message.add_local_variable()); |
| 164 | case protobufs::Transformation::TransformationCase::kAddLoopPreheader: |
| 165 | return MakeUnique<TransformationAddLoopPreheader>( |
| 166 | message.add_loop_preheader()); |
| 167 | case protobufs::Transformation::TransformationCase:: |
| 168 | kAddLoopToCreateIntConstantSynonym: |
| 169 | return MakeUnique<TransformationAddLoopToCreateIntConstantSynonym>( |
| 170 | message.add_loop_to_create_int_constant_synonym()); |
| 171 | case protobufs::Transformation::TransformationCase:: |
| 172 | kAddNoContractionDecoration: |