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

Method Object

core/codegen/output.go:45–72  ·  view source on GitHub ↗

Object compiles the module down to an object file.

(optimize bool)

Source from the content-addressed store, hash-verified

43
44// Object compiles the module down to an object file.
45func (m *Module) Object(optimize bool) ([]byte, error) {
46 t, err := llvm.GetTargetFromTriple(m.triple.String())
47 if err != nil {
48 return nil, fmt.Errorf("Couldn't get target for triple '%v': %v", m.triple, err)
49 }
50 cpu := ""
51 features := ""
52 opt := llvm.CodeGenLevelNone
53 if optimize {
54 opt = llvm.CodeGenLevelDefault
55 }
56 reloc := llvm.RelocPIC
57 model := llvm.CodeModelDefault
58 tm := t.CreateTargetMachine(m.triple.String(), cpu, features, opt, reloc, model)
59 defer tm.Dispose()
60
61 // Check target data is as expected.
62 td := tm.CreateTargetData()
63 defer td.Dispose()
64 m.validateTargetData(td)
65
66 buf, err := tm.EmitToMemoryBuffer(m.llvm, llvm.ObjectFile)
67 if err != nil {
68 return nil, err
69 }
70 defer buf.Dispose()
71 return buf.Bytes(), nil
72}
73
74func (m *Module) validateTargetData(td llvm.TargetData) {
75 abi := m.target

Callers

nothing calls this directly

Calls 3

validateTargetDataMethod · 0.95
StringMethod · 0.65
DisposeMethod · 0.65

Tested by

no test coverage detected