Skip to content

Commit 5f59758

Browse files
author
whitequark
committedAug 13, 2016
Revert "Update for LLVM 3.9."
This reverts commit 3aa7b99.
1 parent 3aa7b99 commit 5f59758

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed
 

Diff for: ‎artiq/compiler/targets.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,14 @@ def target_machine(self):
8686
llmachine = lltarget.create_target_machine(
8787
features=",".join(["+{}".format(f) for f in self.features]),
8888
reloc="pic", codemodel="default")
89-
llmachine.set_asm_verbosity(True)
89+
llmachine.set_verbose(True)
9090
return llmachine
9191

9292
def optimize(self, llmodule):
93+
llmachine = self.target_machine()
9394
llpassmgr = llvm.create_module_pass_manager()
95+
llmachine.target_data.add_pass(llpassmgr)
96+
llmachine.add_analysis_passes(llpassmgr)
9497

9598
# Register our alias analysis passes.
9699
llpassmgr.add_basic_alias_analysis_pass()

Diff for: ‎artiq/compiler/transforms/llvm_ir_generator.py

+21-17
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,9 @@ def memoized(self, *args):
3636
class DebugInfoEmitter:
3737
def __init__(self, llmodule):
3838
self.llmodule = llmodule
39-
self.llcompileunit = None
39+
self.llsubprograms = []
4040
self.cache = {}
4141

42-
llident = self.llmodule.add_named_metadata('llvm.ident')
43-
llident.add(self.emit_metadata(["ARTIQ"]))
44-
45-
llflags = self.llmodule.add_named_metadata('llvm.module.flags')
46-
llflags.add(self.emit_metadata([2, "Debug Info Version", 3]))
47-
llflags.add(self.emit_metadata([2, "Dwarf Version", 4]))
48-
4942
def emit_metadata(self, operands):
5043
def map_operand(operand):
5144
if operand is None:
@@ -73,13 +66,14 @@ def emit_file(self, source_buffer):
7366
})
7467

7568
@memoize
76-
def emit_compile_unit(self, source_buffer):
69+
def emit_compile_unit(self, source_buffer, llsubprograms):
7770
return self.emit_debug_info("DICompileUnit", {
7871
"language": ll.DIToken("DW_LANG_Python"),
7972
"file": self.emit_file(source_buffer),
8073
"producer": "ARTIQ",
8174
"runtimeVersion": 0,
8275
"emissionKind": 2, # full=1, lines only=2
76+
"subprograms": self.emit_metadata(llsubprograms)
8377
}, is_distinct=True)
8478

8579
@memoize
@@ -91,26 +85,21 @@ def emit_subroutine_type(self, typ):
9185
@memoize
9286
def emit_subprogram(self, func, llfunc):
9387
source_buffer = func.loc.source_buffer
94-
95-
if self.llcompileunit is None:
96-
self.llcompileunit = self.emit_compile_unit(source_buffer)
97-
llcompileunits = self.llmodule.add_named_metadata('llvm.dbg.cu')
98-
llcompileunits.add(self.llcompileunit)
99-
10088
display_name = "{}{}".format(func.name, types.TypePrinter().name(func.type))
101-
return self.emit_debug_info("DISubprogram", {
89+
llsubprogram = self.emit_debug_info("DISubprogram", {
10290
"name": func.name,
10391
"linkageName": llfunc.name,
10492
"type": self.emit_subroutine_type(func.type),
10593
"file": self.emit_file(source_buffer),
10694
"line": func.loc.line(),
107-
"unit": self.llcompileunit,
10895
"scope": self.emit_file(source_buffer),
10996
"scopeLine": func.loc.line(),
11097
"isLocal": func.is_internal,
11198
"isDefinition": True,
11299
"variables": self.emit_metadata([])
113100
}, is_distinct=True)
101+
self.llsubprograms.append(llsubprogram)
102+
return llsubprogram
114103

115104
@memoize
116105
def emit_loc(self, loc, scope):
@@ -120,6 +109,18 @@ def emit_loc(self, loc, scope):
120109
"scope": scope
121110
})
122111

112+
def finalize(self, source_buffer):
113+
llident = self.llmodule.add_named_metadata('llvm.ident')
114+
llident.add(self.emit_metadata(["ARTIQ"]))
115+
116+
llflags = self.llmodule.add_named_metadata('llvm.module.flags')
117+
llflags.add(self.emit_metadata([2, "Debug Info Version", 3]))
118+
llflags.add(self.emit_metadata([2, "Dwarf Version", 4]))
119+
120+
llcompile_units = self.llmodule.add_named_metadata('llvm.dbg.cu')
121+
llcompile_units.add(self.emit_compile_unit(source_buffer, tuple(self.llsubprograms)))
122+
123+
123124
class LLVMIRGenerator:
124125
def __init__(self, engine, module_name, target, embedding_map):
125126
self.engine = engine
@@ -406,6 +407,9 @@ def process(self, functions, attribute_writeback):
406407
for func in functions:
407408
self.process_function(func)
408409

410+
if any(functions):
411+
self.debug_info_emitter.finalize(functions[0].loc.source_buffer)
412+
409413
if attribute_writeback and self.embedding_map is not None:
410414
self.emit_attribute_writeback()
411415

Diff for: ‎conda/artiq/meta.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ requirements:
1818
- binutils-or1k-linux
1919
run:
2020
- python >=3.5.2
21-
- llvmlite-artiq 0.11.0.dev py35_25
21+
- llvmlite-artiq 0.10.0.dev py35_24
2222
- lit
2323
- outputcheck
2424
- scipy

0 commit comments

Comments
 (0)