Skip to content

-instcombine miscompilation of MiBench/consumer-typeset #1479

@llvmbot

Description

@llvmbot
Bugzilla Link 1107
Resolution FIXED
Resolved on Nov 07, 2018 00:17
Version trunk
OS All
Reporter LLVM Bugzilla Contributor

Extended Description

I have been trying to solve a little mystery. After resolving various issues
with the test case itsellf (MultisSource/Benchmarks/MiBench/consumer-typeset), I
have determined that there is a codegen bug that this test triggers when
-instcombine is run. Here's how I know this:

  1. If you run the Output/consumer-typeset.linked.rbc file through lli in JIT
    mode it works fine.

  2. All three backends (llc,jit,cbe) fail in the same way. They all produce the
    same incorrect output. This indicates a misoptimization rather than a code
    gen bug.

  3. I used findmisopt to find the first optimization that caused the output to
    differ. It reported this sequence of optimizations as the first set that
    produces a difference in the output:
    -lowersetjmp -funcresolve -raiseallocs -simplifycfg -mem2reg -globalopt
    -globaldce -ipconstprop -deadargelim -instcombine

  4. bugpoint produces a non-sensical reduction (two branches and a return)

I'm wondernig if someone can bugpoint this on Darwin because I'm starting to
think that bugpoint doesn't work so well on Linux. In the last month, a Darwin
run of bugpoint was able to reduce a test case that a run on Linux, with the
same inputs, could not reduce. If you can reduce this on Darwin, I'll file a bug
against bugpoint.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions