Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(550)

Issue 5190043: code review 5190043: 5g, 6g, 8g: fix loop finding bug, squash jmps (Closed)

Can't Edit
Can't Publish+Mail
Start Review
Created:
13 years, 9 months ago by rsc
Modified:
13 years, 9 months ago
Reviewers:
ken3
CC:
ken2, golang-dev
Visibility:
Public.

Description

5g, 6g, 8g: fix loop finding bug, squash jmps The loop recognizer uses the standard dominance frontiers but gets confused by dead code, which has a (not explicitly set) rpo number of 0, meaning it looks like the head of the function, so it dominates everything. If the loop recognizer encounters dead code while tracking backward through the graph it fails to recognize where it started as a loop, and then the optimizer does not registerize values loaded inside that loop. Fix by checking rpo against rpo2r. Separately, run a quick pass over the generated code to squash JMPs to JMP instructions, which are convenient to emit during code generation but difficult to read when debugging the -S output. A side effect of this pass is to eliminate dead code, so the output files may be slightly smaller and the optimizer may have less work to do. There is no semantic effect, because the linkers flatten JMP chains and delete dead instructions when laying out the final code. Doing it here too just makes the -S output easier to read and more like what the final binary will contain. The "dead code breaks loop finding" bug is thus fixed twice over. It seemed prudent to fix loopit separately just in case dead code ever sneaks back in for one reason or another.

Patch Set 1 #

Patch Set 2 : diff -r 0321ea4c243f https://go.googlecode.com/hg/ #

Patch Set 3 : diff -r 110dde956bd9 https://go.googlecode.com/hg/ #

Unified diffs Side-by-side diffs Delta from patch set Stats (+389 lines, -10 lines) Patch
M src/cmd/5g/reg.c View 1 4 chunks +129 lines, -2 lines 0 comments Download
M src/cmd/6g/reg.c View 1 5 chunks +130 lines, -4 lines 0 comments Download
M src/cmd/8g/reg.c View 1 5 chunks +130 lines, -4 lines 0 comments Download

Messages

Total messages: 3
rsc
Hello ken2 (cc: golang-dev@googlegroups.com), I'd like you to review this change to https://go.googlecode.com/hg/
13 years, 9 months ago (2011-10-04 19:06:17 UTC) #1
rsc
*** Submitted as http://code.google.com/p/go/source/detail?r=de5179577ab4 *** 5g, 6g, 8g: fix loop finding bug, squash jmps The ...
13 years, 9 months ago (2011-10-04 19:06:24 UTC) #2
ken3
13 years, 9 months ago (2011-10-18 23:34:23 UTC) #3
lgtm
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b