Benjamin Kramer
e07728b936
SimplifyLibCalls: Give all safely-shrinkable libcalls the same treatment.
...
llvm-svn: 162383
2012-08-22 19:39:15 +00:00
Chad Rosier
1df1fb511f
Whitespace.
...
llvm-svn: 162370
2012-08-22 17:34:11 +00:00
Chad Rosier
671dc096ae
Add test case for r162368.
...
llvm-svn: 162369
2012-08-22 17:31:04 +00:00
Benjamin Kramer
000132454c
SimplifyLibcalls: Add fabs and trunc to the list of libcalls that are safe to shrink from double to float.
...
llvm-svn: 162173
2012-08-18 19:27:32 +00:00
Chandler Carruth
ff123d5c63
Fix the remaining TCL-style quotes found in the testsuite. This is
...
another mechanical change accomplished though the power of terrible Perl
scripts.
I have manually switched some "s to 's to make escaping simpler.
While I started this to fix tests that aren't run in all configurations,
the massive number of tests is due to a really frustrating fragility of
our testing infrastructure: things like 'grep -v', 'not grep', and
'expected failures' can mask broken tests all too easily.
Essentially, I'm deeply disturbed that I can change the testsuite so
radically without causing any change in results for most platforms. =/
llvm-svn: 159547
2012-07-02 19:09:46 +00:00
Chandler Carruth
a5a29f970e
Convert all tests using TCL-style quoting to use shell-style quoting.
...
This was done through the aid of a terrible Perl creation. I will not
paste any of the horrors here. Suffice to say, it require multiple
staged rounds of replacements, state carried between, and a few
nested-construct-parsing hacks that I'm not proud of. It happens, by
luck, to be able to deal with all the TCL-quoting patterns in evidence
in the LLVM test suite.
If anyone is maintaining large out-of-tree test trees, feel free to poke
me and I'll send you the steps I used to convert things, as well as
answer any painful questions etc. IRC works best for this type of thing
I find.
Once converted, switch the LLVM lit config to use ShTests the same as
Clang. In addition to being able to delete large amounts of Python code
from 'lit', this will also simplify the entire test suite and some of
lit's architecture.
Finally, the test suite runs 33% faster on Linux now. ;]
For my 16-hardware-thread (2x 4-core xeon e5520): 36s -> 24s
llvm-svn: 159525
2012-07-02 12:47:22 +00:00
Nuno Lopes
31b54a5379
revert my previous commit (r159173), since as Eli pointed out, it's perfectly ok to mark realloc as noalias
...
llvm-svn: 159175
2012-06-25 23:26:10 +00:00
Nuno Lopes
75eaa72de9
do not set realloc() as NotAlias, since it can return the same pointer. This whole thing should be upgraded to use the MemoryBuiltin interface anyway..
...
llvm-svn: 159173
2012-06-25 22:55:50 +00:00
Nuno Lopes
ad40c0a425
revert my previous patches that introduced an additional parameter to the objectsize intrinsic.
...
After a lot of discussion, we realized it's not the best option for run-time bounds checking
llvm-svn: 157255
2012-05-22 15:25:31 +00:00
Joel Jones
f1c120e9ef
FileCheck-ify, apropos of nothing
...
llvm-svn: 157051
2012-05-18 16:24:01 +00:00
David Majnemer
a9330fe553
Teach SimplifyLibCalls about stpcpy.
...
llvm-svn: 156815
2012-05-15 11:46:21 +00:00
Nuno Lopes
01547b3ad2
change the objectsize intrinsic signature: add a 3rd parameter to denote the maximum runtime performance penalty that the user is willing to accept.
...
This commit only adds the parameter. Code taking advantage of it will follow.
llvm-svn: 156473
2012-05-09 15:52:43 +00:00
Joe Groff
246034465c
FileCheckify, un-XFAIL SimplifyLibCalls/floor test
...
Fixes build on MSVC
llvm-svn: 154970
2012-04-18 00:36:07 +00:00
Joe Groff
3a940250bf
Move win32 SimplifyLibcall test under Transforms
...
llvm-svn: 154967
2012-04-18 00:07:45 +00:00
Eli Bendersky
924f9a671d
Replace all instances of dg.exp file with lit.local.cfg, since all tests are run with LIT now and now Dejagnu. dg.exp is no longer needed.
...
Patch reviewed by Daniel Dunbar. It will be followed by additional cleanup patches.
llvm-svn: 150664
2012-02-16 06:28:33 +00:00
Nick Lewycky
a8e84fb56b
Turn cos(-x) into cos(x). Patch by Alexander Malyshev!
...
llvm-svn: 147291
2011-12-27 18:25:50 +00:00
Benjamin Kramer
f1fd6e394d
Give string constants generated by IRBuilder private linkage.
...
Fixes PR11640.
llvm-svn: 147144
2011-12-22 14:22:14 +00:00
Joerg Sonnenberger
45c4164166
Only replace fwrite with fputc, if the return value is unused.
...
llvm-svn: 146411
2011-12-12 20:18:31 +00:00
Eli Friedman
489c0ff4a4
Add support for custom names for library functions in TargetLibraryInfo. Add a custom name for fwrite and fputs on x86-32 OSX. Make SimplifyLibCalls honor the custom
...
names for fwrite and fputs.
Fixes <rdar://problem/9815881>.
llvm-svn: 144876
2011-11-17 01:27:36 +00:00
Benjamin Kramer
594ee77964
SimplifyLibCalls: Use IRBuilder.CreateGlobalString when creating a string for printf->puts, which correctly sets the unnamed_addr bit on the resulting GlobalVariable.
...
Fixes PR11264.
llvm-svn: 143289
2011-10-29 19:43:31 +00:00
Nick Lewycky
462098824f
"@string = constant i8 0" is a value i8* string of length zero. Analyze that
...
correctly in GetStringLength, fixing PR11181!
llvm-svn: 142558
2011-10-20 00:34:35 +00:00
Lang Hames
e7594abd87
Fixed quoting on default data layout option.
...
llvm-svn: 142286
2011-10-17 21:54:43 +00:00
Eli Friedman
3e3aecbc2c
PR11061: Make simplifylibcalls fold strcmp("", x) correctly.
...
While I'm here, fix the related issue with strncmp, add some actual tests for strcmp and strncmp, and start using StringRef::compare for constant folding instead of using strcmp/strncmp so that the optimized IR isn't dependent on the host's implementation of strcmp.
llvm-svn: 141227
2011-10-05 22:27:16 +00:00
Benjamin Kramer
547b6c5ecd
Stop emitting instructions with the name "tmp" they eat up memory and have to be uniqued, without any benefit.
...
If someone prefers %tmp42 to %42, run instnamer.
llvm-svn: 140634
2011-09-27 20:39:19 +00:00
Eli Friedman
02e737b08e
Move "atomic" and "volatile" designations on instructions after the opcode
...
of the instruction.
Note that this change affects the existing non-atomic load and store
instructions; the parser now accepts both forms, and the change is noted
in the release notes.
llvm-svn: 137527
2011-08-12 22:50:01 +00:00
Chris Lattner
80ed9dc9e5
rip out a ton of intrinsic modernization logic from AutoUpgrade.cpp, which is
...
for pre-2.9 bitcode files. We keep x86 unaligned loads, movnt, crc32, and the
target indep prefetch change.
As usual, updating the testsuite is a PITA.
llvm-svn: 133337
2011-06-18 06:05:24 +00:00
Devang Patel
13f8c7d48e
Preserve line number information while simplifying libcalls.
...
llvm-svn: 127362
2011-03-09 21:27:52 +00:00
Richard Osborne
af52c52569
Optimize fprintf -> iprintf if there are no floating point arguments
...
and siprintf is available on the target.
llvm-svn: 126940
2011-03-03 14:20:22 +00:00
Richard Osborne
2dfb888392
Optimize sprintf -> siprintf if there are no floating point arguments
...
and siprintf is available on the target.
llvm-svn: 126937
2011-03-03 14:09:28 +00:00
Richard Osborne
815de536e5
Optimize printf -> iprintf if there are no floating point arguments
...
and iprintf is available on the target. Currently iprintf is only
marked as being available on the XCore.
llvm-svn: 126935
2011-03-03 13:17:51 +00:00
Dan Gohman
6564ca0c23
Delete obsolete test.
...
llvm-svn: 126680
2011-02-28 19:58:14 +00:00
Daniel Dunbar
210ce0feb5
SimplifyLibCalls: Add missing legalize check on various printf to puts and
...
putchar transforms, their return values are not compatible.
llvm-svn: 125442
2011-02-12 18:19:57 +00:00
Daniel Dunbar
76c95562bc
tests: FileCheckize
...
llvm-svn: 125441
2011-02-12 18:19:53 +00:00
Dan Gohman
93dc2b808f
Revert r64460. strtol and friends cannot be marked readonly, even with
...
a null endptr argument, because they may write to errno.
This fixes a seflhost miscompile observed on Linux targets when TBAA
was enabled.
llvm-svn: 122014
2010-12-17 01:09:43 +00:00
Anders Carlsson
e3ea1cba79
Add a puts optimization that converts puts() to putchar('\n').
...
llvm-svn: 120398
2010-11-30 06:19:18 +00:00
Anders Carlsson
77e9892afd
Fix a typo.
...
llvm-svn: 120394
2010-11-30 06:03:55 +00:00
Anders Carlsson
631d06bbce
Rename this test to FPuts.ll since it actually tests fputs.
...
llvm-svn: 120393
2010-11-30 05:59:26 +00:00
Benjamin Kramer
e6840ef4b3
Fix some broken CHECK lines.
...
llvm-svn: 120332
2010-11-29 22:34:55 +00:00
NAKAMURA Takumi
959807fa37
test/Transforms/SimplifyLibCalls/floor.ll: Mark as XFAIL:win32 due to lack of nearbyintf on MSVC. [PR8466]
...
llvm-svn: 117529
2010-10-28 06:46:04 +00:00
Benjamin Kramer
2b76c66fd6
Add constant folding for strspn and strcspn to SimplifyLibCalls.
...
llvm-svn: 115116
2010-09-30 00:58:35 +00:00
Benjamin Kramer
38d22f69fc
Add strpbrk folding to SimplifyLibCalls.
...
llvm-svn: 115111
2010-09-29 23:52:12 +00:00
Benjamin Kramer
8e861d7eee
Simplify the loop in StrChrOptimizer. FileCheckize test.
...
llvm-svn: 115095
2010-09-29 22:29:12 +00:00
Benjamin Kramer
824645abc9
Teach SimplifyLibCalls how to optimize strrchr.
...
llvm-svn: 115091
2010-09-29 21:50:51 +00:00
Rafael Espindola
a20e2dfe86
Make sure that simplify libcalls does not replace a call with one calling
...
convention with a new call with a different calling convention.
llvm-svn: 106134
2010-06-16 19:34:01 +00:00
Benjamin Kramer
a13bd20396
simplify-libcalls: fold strncmp(x, y, 1) -> memcmp(x, y, 1)
...
The memcmp will be optimized further and even the pathological case
'strstr(x, "x") == x' generates optimal code now.
llvm-svn: 106097
2010-06-16 10:30:29 +00:00
Benjamin Kramer
1118860e3a
simplify-libcalls: fold strstr(a, b) == a -> strncmp(a, b, strlen(b)) == 0
...
llvm-svn: 106047
2010-06-15 21:34:25 +00:00
Nick Lewycky
aee2632be3
The memcpy intrinsic only takes i8* for %src and %dst, so cast them to that
...
first. Fixes PR7265.
llvm-svn: 105206
2010-05-31 06:16:35 +00:00
Benjamin Kramer
9439084cea
Properly promote operands when optimizing a single-character memcmp.
...
llvm-svn: 104648
2010-05-25 22:53:43 +00:00
Mon P Wang
c576ee9040
Reapply address space patch after fixing an issue in MemCopyOptimizer.
...
Added support for address spaces and added a isVolatile field to memcpy, memmove, and memset,
e.g., llvm.memcpy.i32(i8*, i8*, i32, i32) -> llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
llvm-svn: 100304
2010-04-04 03:10:48 +00:00
Mon P Wang
999c1b927b
Revert r100191 since it breaks objc in clang
...
llvm-svn: 100199
2010-04-02 18:43:02 +00:00