MCPcopy Create free account
hub / github.com/google/gapid / IfElse

Method IfElse

core/codegen/builder.go:170–190  ·  view source on GitHub ↗

IfElse builds an if-else statement.

(cond *Value, onTrue, onFalse func())

Source from the content-addressed store, hash-verified

168
169// IfElse builds an if-else statement.
170func (b *Builder) IfElse(cond *Value, onTrue, onFalse func()) {
171 trueBlock := b.m.ctx.AddBasicBlock(b.function.llvm, "if_true")
172 var falseBlock llvm.BasicBlock
173 if onFalse != nil {
174 falseBlock = b.m.ctx.AddBasicBlock(b.function.llvm, "if_false")
175 }
176 endBlock := b.m.ctx.AddBasicBlock(b.function.llvm, "end_if")
177 if onFalse == nil {
178 falseBlock = endBlock
179 }
180
181 b.llvm.CreateCondBr(cond.llvm, trueBlock, falseBlock)
182
183 b.block(trueBlock, endBlock, onTrue)
184
185 if onFalse != nil {
186 b.block(falseBlock, endBlock, onFalse)
187 }
188
189 b.setInsertPointAtEnd(endBlock)
190}
191
192// While builds a logic block with the following psuedocode:
193//

Callers 1

IfMethod · 0.95

Calls 2

blockMethod · 0.95
setInsertPointAtEndMethod · 0.95

Tested by

no test coverage detected