[LLVMbugs] [Bug 5104] New: printf returns 1 even when it fails if -simplify-libcalls is used
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Wed Sep 30 01:56:08 PDT 2009
http://llvm.org/bugs/show_bug.cgi?id=5104
Summary: printf returns 1 even when it fails if -simplify-
libcalls is used
Product: new-bugs
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: new bugs
AssignedTo: unassignedbugs at nondot.org
ReportedBy: timo.lindfors at iki.fi
CC: llvmbugs at cs.uiuc.edu
Created an attachment (id=3589)
--> (http://llvm.org/bugs/attachment.cgi?id=3589)
testcase to reproduce the bug
Steps to reproduce:
1) (testcase also as attachment)
cat > printf-retval.c <<EOF
#include <stdio.h>
int main(int argc, char *argv[]) {
int ret;
fclose(stdout);
ret = printf("%c", 'A');
fprintf(stderr, "printf returned %d\n", ret);
return 0;
}
EOF
2) clang -O0 printf-retval.c && ./a.out
3) clang -O3 printf-retval.c && ./a.out
Expected results:
2 & 3) optimization does not change the return value of printf. It always
returns a negative value on failure. stdout is closed so it will fail.
Actual results:
2) printf returned -1
3) printf returned 1
More info:
1) It seems lib/Transforms/Scalar/SimplifyLibCalls.cpp converts printf to
putchar in this case and ignores the return value of putchar completely.
2) The attached patch llvm-simplifylibcalls-putchar-retval1.patch works for me
but probably needs to be polished by somebody more familiar with llvm
internals.
--
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