On Wed, Oct 31, 2012 at 11:43:44AM -0400, Jack Howarth
wrote:> While testing llvm/polly svn on x86_64-apple-darwin10/11/12, I noticed
that three darwin
> specific polly-test regressions exist. At least part of these failures
appear to be due
> to lli on darwin not accepting piped input such that the test...
>
> opt -load /sw/src/fink.build/llvm32-3.2-0/llvm-3.2/build/lib/LLVMPolly.so
> -basicaa -polly-prepare -polly-region-simplify -O3
>
/sw/src/fink.build/llvm32-3.2-0/llvm-3.2/tools/polly/test/CodeGen/single_do_loop_int_max_iterations.ll
> | lli
>
> produces the error...
>
> LLVM ERROR: Could not resolve external global address: stdout
>
> I am able to break this test up into sections with...
>
> % opt -load /sw/src/fink.build/llvm32-3.2-0/llvm-3.2/build/lib/LLVMPolly.so
> -basicaa -polly-prepare -polly-region-simplify -O3
>
/sw/src/fink.build/llvm32-3.2-0/llvm-3.2/tools/polly/test/CodeGen/single_do_loop_int_max_iterations.ll
> > tempfile
>
> which produces a file that fails to pipe into lli on darwin...
>
> % cat tempfile | lli
> LLVM ERROR: Could not resolve external global address: stdout
>
> but works fine with lli built on x86_64 Fedora 15...
>
> $ cat tempfile | ~/llvm_build/bin/lli
> Output 2147483646
>
> The tempfile test file is attached to the original PR I opened for the
darwin specific polly testsuite failures...
>
> http://llvm.org/bugs/show_bug.cgi?id=14142
>
> Any idea how to fix this issue? Also should I open a unique PR for this
issue or just leave it
> as part of PR14142? Thanks in advance.
> Jack
The same error occurs if the tempfile is passed as an argument to lli on
darwin but not linux.
Running this command on darwin under bugpoint, I see...
% bugpoint --run-custom --exec-command=lli tempfile
Read input file : 'tempfile'
*** All input ok
Initializing execution environment: Found command in: /sw/opt/llvm-3.2/bin/lli
Running the code generator to test for a crash:
Generating reference output from raw program: <llc><gcc>
Error running tool:
/usr/bin/gcc -x assembler bugpoint-test-program.bc.llc.s -x none -o
bugpoint-test-program.bc.llc.s.gcc.exe -lm -O2
bugpoint-test-program.bc:4:Alignment too large: 15. assumed.
bugpoint-test-program.bc:5:Unknown pseudo-op: .type
bugpoint-test-program.bc:5:Rest of line ignored. 1st junk character valued 115
(s).
bugpoint-test-program.bc:14:Unknown pseudo-op: .size
bugpoint-test-program.bc:14:Rest of line ignored. 1st junk character valued 115
(s).
bugpoint-test-program.bc:17:Alignment too large: 15. assumed.
bugpoint-test-program.bc:18:Unknown pseudo-op: .type
bugpoint-test-program.bc:18:Rest of line ignored. 1st junk character valued 109
(m).
bugpoint-test-program.bc:32:junk `@PLT' after expression
bugpoint-test-program.bc:39:Unknown pseudo-op: .size
bugpoint-test-program.bc:39:Rest of line ignored. 1st junk character valued 109
(m).
bugpoint-test-program.bc:41:Unknown pseudo-op: .type
bugpoint-test-program.bc:41:Rest of line ignored. 1st junk character valued 65
(A).
bugpoint-test-program.bc:43:Unknown pseudo-op: .type
bugpoint-test-program.bc:43:Rest of line ignored. 1st junk character valued 46
(.).
bugpoint-test-program.bc:44:unknown section type: @progbits
bugpoint-test-program.bc:44:Rest of line ignored. 1st junk character valued 46
(.).
bugpoint-test-program.bc:46:Unknown pseudo-op: .size
bugpoint-test-program.bc:46:Rest of line ignored. 1st junk character valued 46
(.).
bugpoint-test-program.bc:49:segment-name: ".note.GNU-stack" too long
(maximum 16 characters)
bugpoint-test-program.bc:49:Rest of line ignored. 1st junk character valued 64
(@).
*** There is a bug running the "safe" backend. Either debug it (for
example with the -run-jit bugpoint option, if JIT is being used as the
"safe" backend), or fix the error some other way.
*** Debugging code generator crash!
Checking to see if we can delete global inits:
- Removing all global inits hides problem!
*** Attempting to reduce the number of global variables in the testcase
Checking for crash with only these global variables: A .str:
*** Attempting to reduce the number of functions in the testcase
Checking for crash with only these functions: single_do_loop_int_max_iterations
main:
Checking for crash with only these blocks: entry entry:
Checking for crash with only 13 instructions:
*** Attempting to reduce testcase by deleting instructions: Simplification Level
#1
Checking instruction: fence seq_cst
Checking instruction: store i32 2147483646, i32* getelementptr inbounds ([20 x
i32]* @A, i64 0, i64 0), align 4
Checking instruction: fence seq_cst
Checking instruction: store i32 0, i32* getelementptr inbounds ([20 x i32]*
@A, i64 0, i64 0), align 4
Checking instruction: fence seq_cst
Checking instruction: store i32 2147483646, i32* getelementptr inbounds ([20 x
i32]* @A, i64 0, i64 0), align 4
Checking instruction: fence seq_cst
Checking instruction: %tmp = load %struct._IO_FILE** @stdout, align 8
Checking instruction: %tmp1 = load i32* getelementptr inbounds ([20 x i32]*
@A, i64 0, i64 0), align 4
Checking instruction: %call = tail call i32 (%struct._IO_FILE*, i8*, ...)*
@fprintf(%struct._IO_FILE* %tmp, i8* getelementptr inbounds ([11 x i8]* @.str,
i64 0, i64 0), i32 %tmp1) nounwind
Checking instruction: %tmp2 = load i32* getelementptr inbounds ([20 x i32]*
@A, i64 0, i64 0), align 4
Checking instruction: %not.cmp = icmp ne i32 %tmp2, 2147483646
Checking instruction: %. = zext i1 %not.cmp to i32
*** Attempting to reduce testcase by deleting instructions: Simplification Level
#0
Checking instruction: fence seq_cst
Checking instruction: store i32 2147483646, i32* getelementptr inbounds ([20 x
i32]* @A, i64 0, i64 0), align 4
Checking instruction: fence seq_cst
Checking instruction: store i32 0, i32* getelementptr inbounds ([20 x i32]*
@A, i64 0, i64 0), align 4
Checking instruction: fence seq_cst
Checking instruction: store i32 2147483646, i32* getelementptr inbounds ([20 x
i32]* @A, i64 0, i64 0), align 4
Checking instruction: fence seq_cst
Checking instruction: %tmp = load %struct._IO_FILE** @stdout, align 8
Checking instruction: %tmp1 = load i32* getelementptr inbounds ([20 x i32]*
@A, i64 0, i64 0), align 4
Checking instruction: %call = tail call i32 (%struct._IO_FILE*, i8*, ...)*
@fprintf(%struct._IO_FILE* %tmp, i8* getelementptr inbounds ([11 x i8]* @.str,
i64 0, i64 0), i32 %tmp1) nounwind
Checking instruction: %tmp2 = load i32* getelementptr inbounds ([20 x i32]*
@A, i64 0, i64 0), align 4
Checking instruction: %not.cmp = icmp ne i32 %tmp2, 2147483646
Checking instruction: %. = zext i1 %not.cmp to i32
*** Attempting to perform final cleanups:
Emitted bitcode to 'bugpoint-reduced-simplified.bc'
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev