[LLVMbugs] [Bug 11104] New: Inefficient Code Gen for Boolean Expression Evaluation

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Oct 10 09:32:31 PDT 2011


           Summary: Inefficient Code Gen for Boolean Expression Evaluation
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: LLVM Codegen
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: justin.holewinski at gmail.com
                CC: llvmbugs at cs.uiuc.edu

Created an attachment (id=7431)
 --> (http://llvm.org/bugs/attachment.cgi?id=7431)
Test Case Source

Clang is currently producing inefficient LLVM IR for expression evaluation
involving short-circuit evaluation. In the attached test case, both an integer
and a boolean expression is computed. However, short-circuit evaluation of the
boolean expression may render the integer computation useless. An additional
basic block is inserted in the LLVM IR to allow short-circuit evaluation, but
the possibly-unnecessary integer computation is not placed in this basic block.
Instead, the computation is *always* performed.

Please see the attached short-circuit.cpp test case, as well as the
short-circuit.clang.ll LLVM IR file which shows the inefficiency. Additionally,
the short-circuit.dragonegg.ll shows the LLVM IR output from DragonEgg, which
shows GCC moving the integer computation into a basic block which will only be
executed if the result of the integer expression is actually needed.

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list