[llvm-dev] clang/llc is just hanging during instruction selection
Rail Shafigulin via llvm-dev
llvm-dev at lists.llvm.org
Mon Mar 21 16:30:41 PDT 2016
I've been told that clang/llc is handing because I'm creating a cycle in my
instruction selection. I'm trying to figure out where exactly but
unfortunately my knowledge is quite limited. I'd appreciate if someone
could point me in the right direction.
Here is the test file I'm using:
#define N 32
int foo () {
int a[N], b[N], c[N];
for (int i = 0; i < N; ++i)
c[i] = a[i] + b[i];
int sum = 0;
for (int i =0; i < N; i++)
sum += c[i];
return sum;
}
I generate a .ll file using
clang --target=esencia z.c -S -emit-llvm -o z.esencia.ll -O3
And then I run llc using
llc -mcpu=esencia -march=esencia z.esencia.ll -o z.esencia.s -O3
-debug-only=isel
setOperationAction(ISD::BUILD_VECTOR, MVT::v4i32, Expand);
setOperationAction(ISD::EXTRACT_VECTOR_ELT, MVT::v4i32, Expand);
setOperationAction(ISD::VECTOR_SHUFFLE, MVT::v4i32, Expand);
At this point llc just hangs. I was explained that I create a cycle
I know that these three lines cause a problem (since none existed before I
added them), but unfortunately my knowledge is limited and I have hard time
understanding how I created it. Would someone be able to help me out?
The contents of the .ll file is located here: http://pastebin.com/daHnJWwB
The output of the
llc -mcpu=esencia -march=esencia z.esencia.ll -o z.esencia.s -O3
-debug-only=isel
command is provided here: http://pastebin.com/ErDaxJ4J
I realize that the output is quite big and would love find a way to reduce,
but quite frankly I'm not sure how to do it. I tried using bugpoint but it
hung as well.
I would really appreciate any help on this, i.e. how am i creating cycles
and how to eliminate them?
--
Rail Shafigulin
Software Engineer
Esencia Technologies
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160321/8c7e9d0d/attachment.html>
More information about the llvm-dev
mailing list