MCPcopy
hub / github.com/tinygo-org/tinygo / extendInteger

Method extendInteger

compiler/asserts.go:265–276  ·  view source on GitHub ↗

extendInteger extends the value to at least targetType using a zero or sign extend. The resulting value is not truncated: it may still be bigger than targetType.

(value llvm.Value, valueType types.Type, targetType llvm.Type)

Source from the content-addressed store, hash-verified

263// extend. The resulting value is not truncated: it may still be bigger than
264// targetType.
265func (b *builder) extendInteger(value llvm.Value, valueType types.Type, targetType llvm.Type) llvm.Value {
266 if value.Type().IntTypeWidth() < targetType.IntTypeWidth() {
267 if valueType.Underlying().(*types.Basic).Info()&types.IsUnsigned != 0 {
268 // Unsigned, so zero-extend to the target type.
269 value = b.CreateZExt(value, targetType, "")
270 } else {
271 // Signed, so sign-extend to the target type.
272 value = b.CreateSExt(value, targetType, "")
273 }
274 }
275 return value
276}

Callers 4

createChanBoundsCheckMethod · 0.95
createExprMethod · 0.95

Calls 2

InfoMethod · 0.80
TypeMethod · 0.45

Tested by

no test coverage detected