[LLVMdev] Possible bug in LLC at -O1
Anitha B Gollamudi
anitha.boyapati at gmail.com
Tue Nov 20 01:40:21 PST 2012
Hi
I am seeing an issue (compiled application seg faults) when llc is
used at -O1. I first need to triage out which optimization/pass is
responsible for the seg fault. As such I am following this strategy:
disable gradually those passes at -O1 which do not exist at -O0. For
this I used -pass-debug=Structure. [ diff pasted at the end for
reference]
The problem is I have used almost all -disable-* options from llc
hidden help. Yet I could not make it equivalent to -O0. Here are my
questions:
1. For some reason, I am not able to use -regalloc=fast at -O1. Gives
the following error:
$ llc -regalloc=fast -O1 -mcpu=bdver2 test.ll
LLVM ERROR: regalloc=... not currently supported with -O0
How do I switch to "fast" allocator at -O1?
2. How do I disable following passes:
(a) Optimize for code generation
(b) Remove dead machine instructions
(c) Optimize machine instruction PHIs
(d) Remove unreachable machine basic blocks
(Note that I am already using -disable-machine-dse, cse, -machine-sink
, lsr ...)
3. Is there any other better way to see which pass(es) are responsible
for the seg fault at -O1 ?
-----------------------------
+Machine Branch Probability Analysis
ModulePass Manager
FunctionPass Manager
Preliminary module verification
Dominator Tree Construction
Module Verifier
+ Natural Loop Information
+ Loop Pass Manager
+ Canonicalize natural loops
+ Scalar Evolution Analysis
+ Loop Pass Manager
+ Canonicalize natural loops
+ Induction Variable Users
+ Loop Strength Reduction
+ Optimize for code generation
+ Natural Loop Information
+ Branch Probability Analysis
X86 DAG->DAG Instruction Selection
+ MachineDominator Tree Construction
+ Local Dynamic TLS Access Clean-up
+ Tail Duplication
+ Optimize machine instruction PHIs
+ Remove dead machine instructions
+ MachineDominator Tree Construction
+ Machine Natural Loop Construction
+ Machine Loop Invariant Code Motion
+ Machine Common Subexpression Elimination
+ Machine code sinking
+ Peephole Optimizations
+ Process Implicit Definitions
+ Remove unreachable machine basic blocks
+ Live Variable Analysis
- Fast Register Allocator
+ Slot index numbering
+ Live Interval Analysis
+ Debug Variable Analysis
+ Simple Register Coalescing
+ Calculate spill weights
+ Live Stack Slot Analysis
+ Virtual Register Map
+ Live Register Matrix
+ Bundle Machine CFG Edges
+ Spill Code Placement Analysis
+ Greedy Register Allocator
+ Virtual Register Rewriter
+ Live Stack Slot Analysis
+ Stack Slot Coloring
+ Machine Loop Invariant Code Motion
+ Control Flow Optimizer
+ Tail Duplication
+ Machine Copy Propagation Pass
+ MachineDominator Tree Construction
+ Machine Natural Loop Construction
+ Post RA top-down list latency scheduler
+ Machine Block Frequency Analysis
+ Branch Probability Basic Block Placement
+ Execution dependency fix
--
Anitha
More information about the llvm-dev
mailing list