Chris Lattner
31e9edce1c
Fix some bugs in SimplifyNodeWithTwoResults where it would call deletenode to
...
delete a node even if it was not dead in some cases. Instead, just add it to
the worklist. Also, make sure to use the CombineTo methods, as it was doing
things that were unsafe: the top level combine loop could touch dangling memory.
This fixes CodeGen/Generic/2008-01-25-dag-combine-mul.ll
llvm-svn: 46384
2008-01-26 01:09:19 +00:00
Chris Lattner
9f7fed1c1b
new testcase.
...
llvm-svn: 46139
2008-01-17 19:47:23 +00:00
Chris Lattner
89126bde19
add testcase that has been sitting in my tree for awhile.
...
llvm-svn: 46124
2008-01-17 06:54:09 +00:00
Chris Lattner
50baecd31e
new testcase for llvm.trap.
...
llvm-svn: 46020
2008-01-15 22:17:26 +00:00
Chris Lattner
e34d7d0e24
new testcase for PR1845
...
llvm-svn: 45795
2008-01-10 00:30:38 +00:00
Gordon Henriksen
c7e991b7c3
Setting GlobalDirective in TargetAsmInfo by default rather than
...
providing a misleading facility. It's used once in the MIPS backend
and hardcoded as "\t.globl\t" everywhere else.
llvm-svn: 45676
2008-01-07 02:31:11 +00:00
Gordon Henriksen
6047b6e140
With this patch, the LowerGC transformation becomes the
...
ShadowStackCollector, which additionally has reduced overhead with
no sacrifice in portability.
Considering a function @fun with 8 loop-local roots,
ShadowStackCollector introduces the following overhead
(x86):
; shadowstack prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl $___gc_fun, 20(%esp)
movl $0, 24(%esp)
movl $0, 28(%esp)
movl $0, 32(%esp)
movl $0, 36(%esp)
movl $0, 40(%esp)
movl $0, 44(%esp)
movl $0, 48(%esp)
movl $0, 52(%esp)
movl %ecx, 16(%esp)
leal 16(%esp), %ecx
movl %ecx, (%eax)
; shadowstack loop overhead
(none)
; shadowstack epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)
; shadowstack metadata
.align 3
___gc_fun: # __gc_fun
.long 8
.space 4
In comparison to LowerGC:
; lowergc prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl %ecx, 48(%esp)
movl $8, 52(%esp)
movl $0, 60(%esp)
movl $0, 56(%esp)
movl $0, 68(%esp)
movl $0, 64(%esp)
movl $0, 76(%esp)
movl $0, 72(%esp)
movl $0, 84(%esp)
movl $0, 80(%esp)
movl $0, 92(%esp)
movl $0, 88(%esp)
movl $0, 100(%esp)
movl $0, 96(%esp)
movl $0, 108(%esp)
movl $0, 104(%esp)
movl $0, 116(%esp)
movl $0, 112(%esp)
; lowergc loop overhead
leal 44(%esp), %eax
movl %eax, 56(%esp)
leal 40(%esp), %eax
movl %eax, 64(%esp)
leal 36(%esp), %eax
movl %eax, 72(%esp)
leal 32(%esp), %eax
movl %eax, 80(%esp)
leal 28(%esp), %eax
movl %eax, 88(%esp)
leal 24(%esp), %eax
movl %eax, 96(%esp)
leal 20(%esp), %eax
movl %eax, 104(%esp)
leal 16(%esp), %eax
movl %eax, 112(%esp)
; lowergc epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)
; lowergc metadata
(none)
llvm-svn: 45670
2008-01-07 01:30:53 +00:00
Duncan Sands
57a60f0466
Fix PR1833 - eh.exception and eh.selector return two
...
values, which means doing extra legalization work.
It would be easier to get this kind of thing right if
there was some documentation...
llvm-svn: 45472
2007-12-31 18:35:50 +00:00
Gordon Henriksen
d89e645c38
Tests for changes made in r45356, where IPO optimizations would drop
...
collector algorithms.
llvm-svn: 45357
2007-12-26 02:47:37 +00:00
Gordon Henriksen
b969c5981b
GC poses hazards to the inliner. Consider:
...
define void @f() {
...
call i32 @g()
...
}
define void @g() {
...
}
The hazards are:
- @f and @g have GC, but they differ GC. Inlining is invalid. This
may never occur.
- @f has no GC, but @g does. g's GC must be propagated to @f.
The other scenarios are safe:
- @f and @g have the same GC.
- @f and @g have no GC.
- @g has no GC.
This patch adds inliner checks for the former two scenarios.
llvm-svn: 45351
2007-12-25 03:10:07 +00:00
Gordon Henriksen
fb56bde933
Noting and enforcing that GC intrinsics are valid only within a
...
function with GC.
This will catch the error when the inliner inlines a function with
GC into a caller with no GC.
llvm-svn: 45350
2007-12-25 02:31:26 +00:00
Gordon Henriksen
9157c499fc
Adjusting verification of "llvm.gc*" intrinsic prototypes to match
...
LangRef.
llvm-svn: 45349
2007-12-25 02:02:10 +00:00
Duncan Sands
b5a79d0eaa
Make invokes of inline asm legal. Teach codegen
...
how to lower them (with no attempt made to be
efficient, since they should only occur for
unoptimized code).
llvm-svn: 45108
2007-12-17 18:08:19 +00:00
Gordon Henriksen
71183b6739
Adding a collector name attribute to Function in the IR. These
...
methods are new to Function:
bool hasCollector() const;
const std::string &getCollector() const;
void setCollector(const std::string &);
void clearCollector();
The assembly representation is as such:
define void @f() gc "shadow-stack" { ...
The implementation uses an on-the-side table to map Functions to
collector names, such that there is no overhead. A StringPool is
further used to unique collector names, which are extremely
likely to be unique per process.
llvm-svn: 44769
2007-12-10 03:18:06 +00:00
Gordon Henriksen
ad80af9677
Upgrading this test to 2.0 .ll syntax.
...
llvm-svn: 44738
2007-12-09 15:03:01 +00:00
Chris Lattner
f4769da4b3
upgrade this test
...
llvm-svn: 44405
2007-11-28 18:22:12 +00:00
Chris Lattner
79ae9895f6
Fix a crash on invalid code due to memcpy lowering.
...
llvm-svn: 44378
2007-11-27 22:14:42 +00:00
Duncan Sands
b87dde7e8e
Fix a bug in which node A is replaced by node B, but later
...
node A gets back into the DAG again because it was hiding in
one of the node maps: make sure that node replacement happens
in those maps too.
llvm-svn: 44263
2007-11-21 16:43:19 +00:00
Evan Cheng
89ca5b091f
-pre-RA-sched=none, simple, simple-noitin are gone.
...
llvm-svn: 42505
2007-10-01 22:17:20 +00:00
Dan Gohman
f818ccd463
Fix a typo in a comment.
...
llvm-svn: 42263
2007-09-24 15:50:11 +00:00
Gordon Henriksen
a2f3e13cf4
Fix for PR1633: Verifier doesn't fully verify GC intrinsics
...
LLVM now enforces the following prototypes for the write barriers:
<ty>* @llvm.gcread(<ty2>*, <ty>**)
void @llvm.gcwrite(<ty>*, <ty2>*, <ty>**)
And for @llvm.gcroot, the first stack slot is verified to be an alloca or a
bitcast of an alloca.
Fixes test/CodeGen/Generic/GC/lower_gcroot.ll, which violated these.
llvm-svn: 42051
2007-09-17 20:30:04 +00:00
Anton Korobeynikov
122bf4be7e
Split eh.select / eh.typeid.for intrinsics into i32/i64 versions. This is needed, because they just "mark" register
...
liveins and we let frontend solve type issue, not lowering code :)
llvm-svn: 41763
2007-09-07 11:39:35 +00:00
Dale Johannesen
6480cc6f8c
Change all floating constants that are not exactly
...
representable to use hex format.
llvm-svn: 41722
2007-09-05 17:50:36 +00:00
Evan Cheng
ffac17a223
Fix a gcroot lowering bug.
...
llvm-svn: 41668
2007-09-01 02:00:51 +00:00
Duncan Sands
dd94bde661
Remove this test as it is too hard to fix after the
...
latest EH changes, and in any case it is hard to
imagine how the original bug could be reintroduced.
llvm-svn: 41497
2007-08-27 17:08:14 +00:00
Duncan Sands
90064ed445
Now that we don't output cleanups by default, the action
...
offset needs to be adjusted in this test.
llvm-svn: 41490
2007-08-27 16:30:05 +00:00
Chris Lattner
2ed652f11d
Allow target constants to be illegal types. The target should
...
know how to handle them. This fixes
test/CodeGen/Generic/asm-large-immediate.ll
llvm-svn: 41388
2007-08-25 01:00:22 +00:00
Dan Gohman
ada7205b76
Convert tests using "grep -c ... | grep ..." to use the count script.
...
llvm-svn: 41100
2007-08-15 13:49:33 +00:00
Dan Gohman
f9dd170e36
Convert tests using "| wc -l | grep ..." to use the count script.
...
llvm-svn: 41097
2007-08-15 13:36:28 +00:00
Chandler Carruth
7132e00de7
This is the patch to provide clean intrinsic function overloading support in LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future.
...
This also changes the syntax for llvm.bswap, llvm.part.set, llvm.part.select, and llvm.ct* intrinsics. They are automatically upgraded by both the LLVM ASM reader and the bitcode reader. The test cases have been updated, with special tests added to ensure the automatic upgrading is supported.
llvm-svn: 40807
2007-08-04 01:51:18 +00:00
Dan Gohman
54ec4bfa5f
Change the x86 assembly output to use tab characters to separate the
...
mnemonics from their operands instead of single spaces. This makes the
assembly output a little more consistent with various other compilers
(f.e. GCC), and slightly easier to read. Also, update the regression
tests accordingly.
llvm-svn: 40648
2007-07-31 20:11:57 +00:00
Tanya Lattner
8817a170f7
Don't use * in XFAIL line unless you want it to XFAIL on everything. I don't believe you can use true regular expressions here. It will just look for those keywords. Please test this on sparc and see if they still are xfailed.
...
llvm-svn: 39975
2007-07-17 18:08:32 +00:00
Gabor Greif
6881ace037
XFAIL these on sparc-solaris
...
llvm-svn: 39969
2007-07-17 10:25:31 +00:00
Reid Spencer
5bc753e26b
For PR1558:
...
Move tests that have C/C++ sources into the appropriate directory. This
allows them to be selected for testing based on whether llvm-gcc is
present or not.
llvm-svn: 39963
2007-07-17 06:20:38 +00:00
Dan Gohman
c6e67a6126
Remove the trailing semicolon from function declarations in LLVM,
...
where it's interpreted as a comment, not part of the syntax.
llvm-svn: 39920
2007-07-16 13:37:30 +00:00
Dale Johannesen
2182f06f2d
Skeleton of post-RA scheduler; doesn't do anything yet.
...
Change name of -sched option and DEBUG_TYPE to
pre-RA-sched; adjust testcases.
llvm-svn: 39816
2007-07-13 17:13:54 +00:00
Chris Lattner
0e623de40d
remove this bogus t-t
...
llvm-svn: 38464
2007-07-09 17:31:07 +00:00
Duncan Sands
6ddf75174a
Test that byte offsets are used to index into the list
...
of filter ids, and not simply the id index. Testing
this requires at least 128 type infos!
llvm-svn: 37941
2007-07-06 12:38:27 +00:00
Chris Lattner
feba62c719
avoid ambiguity in target selection
...
llvm-svn: 37927
2007-07-05 22:16:19 +00:00
John Criswell
2660cef6d7
Convert .cvsignore files
...
llvm-svn: 37801
2007-06-29 16:35:07 +00:00
Duncan Sands
92bf2c628c
Workaround for PR1508.
...
llvm-svn: 37597
2007-06-15 19:04:19 +00:00
Duncan Sands
fe940d8d74
"Simplified" testcase for PR1422.
...
llvm-svn: 37462
2007-06-06 09:59:53 +00:00
Dale Johannesen
80fae16a06
Test assumes tail merging is off; this must now be explicit.
...
llvm-svn: 37286
2007-05-22 17:18:05 +00:00
Chris Lattner
7bee9ad4f7
add testcase for 128-bit add/sub
...
llvm-svn: 37170
2007-05-17 18:22:37 +00:00
Lauro Ramos Venancio
3f142cbca2
Fix an infinite recursion in GetNegatedExpression.
...
llvm-svn: 37086
2007-05-15 17:05:43 +00:00
Chris Lattner
d1f5ab0da8
move to CodeGen/ARM/2007-05-07-tailmerge-1.ll
...
llvm-svn: 36918
2007-05-08 02:13:52 +00:00
Evan Cheng
7cbd722dba
Fix test case.
...
llvm-svn: 36911
2007-05-07 21:38:05 +00:00
Dale Johannesen
9a25b3afcd
Handle some non-exit blocks in tail merging.
...
llvm-svn: 36907
2007-05-07 20:57:21 +00:00
Chris Lattner
bd82fb7d2f
the sparc v8 backend handles this correctly
...
llvm-svn: 36801
2007-05-05 22:12:57 +00:00
Chris Lattner
6760b998ba
unxfail this, llc doesn't support this feature yet, so don't run it.
...
llvm-svn: 36796
2007-05-05 21:51:34 +00:00
Duncan Sands
d31dcdacef
Check that the right eh personality function is used.
...
llvm-svn: 36788
2007-05-05 20:22:08 +00:00
Duncan Sands
6e5011d208
Test that the eh lowering code can handle constant folded bitcasts.
...
llvm-svn: 36746
2007-05-04 17:14:42 +00:00
Reid Spencer
0659c45204
Split target dependent test portions to target-specific directories.
...
llvm-svn: 36612
2007-05-01 02:56:15 +00:00
Chris Lattner
9d912af4e8
testcase for PR1228
...
llvm-svn: 36601
2007-04-30 23:34:46 +00:00
Reid Spencer
e7449654d1
For PR1370:
...
Rearrange some tests so that if PowerPC is not being built we don't try to
run PowerPC specific tests.
llvm-svn: 36587
2007-04-30 05:11:58 +00:00
Chris Lattner
7141c393b6
ensure the operand prints.
...
llvm-svn: 36533
2007-04-28 06:07:55 +00:00
Chris Lattner
61553c1340
new testcase
...
llvm-svn: 36532
2007-04-28 06:05:59 +00:00
Chris Lattner
193d2f09f0
update syntax
...
llvm-svn: 36531
2007-04-28 06:03:12 +00:00
Chris Lattner
83a5e928e6
make this testcase harder, to cover PR1326
...
llvm-svn: 36509
2007-04-27 17:12:23 +00:00
Duncan Sands
9e72fc1163
Test that eh_selector lowering accepts global variables as well as bitcasts
...
of global variables.
llvm-svn: 36500
2007-04-27 06:56:53 +00:00
Anton Korobeynikov
084cbbbe25
Unxfail tests
...
llvm-svn: 36497
2007-04-26 21:20:04 +00:00
Anton Korobeynikov
4ff20ff903
Add test to proper place. Also, XFAIL until ppc bootstrap will be ok.
...
llvm-svn: 36491
2007-04-26 20:49:05 +00:00
Chris Lattner
4fe9eb5052
new testcase
...
llvm-svn: 36230
2007-04-17 23:43:31 +00:00
Reid Spencer
658894a8eb
Also validate that the code generation of IntrinsicLowering for LLI works.
...
llvm-svn: 36175
2007-04-16 21:52:56 +00:00
Reid Spencer
6e87ec4351
For PR1319:
...
Remove && from the end of the lines to prevent tests from throwing run
lines into the background. Also, clean up places where the same command
is run multiple times by using a temporary file.
llvm-svn: 36142
2007-04-16 17:36:08 +00:00
Reid Spencer
4dcf8bff4b
For PR1319:
...
Fix syntax of tests to ensure grep pattern is properly quoted.
llvm-svn: 36134
2007-04-16 15:31:49 +00:00
Reid Spencer
c940d0761c
For PR1336:
...
Un-XFAIL this test now that llvm-ugprade knows how to create functions with
empty names.
llvm-svn: 36107
2007-04-16 03:06:39 +00:00
Reid Spencer
6584cf60f2
For PR1336:
...
XFAIL tests covered by the PR. These will be un-XFAILed as they are fixed.
llvm-svn: 36093
2007-04-15 23:00:46 +00:00
Reid Spencer
ff8169f5cb
For PR1319: Upgrade to new test harness.
...
llvm-svn: 36086
2007-04-15 20:48:50 +00:00
Reid Spencer
0318670cf3
For PR1319: Upgrade to new test harness.
...
llvm-svn: 36080
2007-04-15 19:35:51 +00:00
Chris Lattner
9f2865ac14
xfail for now
...
llvm-svn: 36033
2007-04-14 23:40:49 +00:00
Anton Korobeynikov
8a1a84f96e
Fix PR1325: Case range optimization was performed in the case it
...
shouldn't. Also fix some "latent" bug on 64-bit platforms
llvm-svn: 35990
2007-04-14 13:25:55 +00:00
Anton Korobeynikov
e288040abf
Fix PR1323 : we haven't updated phi nodes in good manner :)
...
llvm-svn: 35963
2007-04-13 06:53:51 +00:00
Chris Lattner
4c964c3aed
make this really work on linux :)
...
llvm-svn: 35948
2007-04-12 18:10:16 +00:00
Chris Lattner
028974508b
make this happier on linux hosts
...
llvm-svn: 35947
2007-04-12 18:09:06 +00:00
Reid Spencer
d029c7e666
Make the llvm-runtest function much more amenable by eliminating all the
...
global variables that needed to be passed in. This makes it possible to
add new global variables with only a couple changes (Makefile and llvm-dg.exp)
instead of touching every single dg.exp file.
llvm-svn: 35918
2007-04-11 19:56:59 +00:00
Chris Lattner
7345e56885
change test name.
...
llvm-svn: 35904
2007-04-11 15:24:04 +00:00
Chris Lattner
05362ffdce
new testcase
...
llvm-svn: 35882
2007-04-11 05:32:13 +00:00
Anton Korobeynikov
506eaf7915
Next stage into switch lowering refactoring
...
1. Fix some bugs in the jump table lowering threshold
2. Implement much better metric for optimal pivot selection
3. Tune thresholds for different lowering methods
4. Implement shift-and trick for lowering small (<machine word
length) cases with few destinations. Good testcase will follow.
llvm-svn: 35816
2007-04-09 12:31:58 +00:00
Chris Lattner
e505615531
new testcase for PR1308
...
llvm-svn: 35784
2007-04-09 00:45:42 +00:00
Reid Spencer
91b273ae39
XFAIL this test for now. It will be a while before I can implement this
...
intrinsic properly in SDISel.
llvm-svn: 35692
2007-04-05 22:57:45 +00:00
Anton Korobeynikov
506d8db8a4
Fix test
...
llvm-svn: 35683
2007-04-05 16:43:09 +00:00
Reid Spencer
cce90f55ed
Implement the llvm.bit.part_select.iN.iN.iN overloaded intrinsic.
...
llvm-svn: 35678
2007-04-04 23:48:25 +00:00
Anton Korobeynikov
915e61736b
Properly emit range comparisons for switch cases, where neighbour cases
...
go to the same destination. Now we're producing really good code for
switch-lower-feature.ll testcase
llvm-svn: 35672
2007-04-04 21:14:49 +00:00
Chris Lattner
4cb30067c2
new testcase for PR1296
...
llvm-svn: 35574
2007-04-02 01:32:59 +00:00
Reid Spencer
a5f996bd27
Revert the name changes for llvm.bswap to allow (and test) llvm-upgrade of
...
this intrinsic.
llvm-svn: 35566
2007-04-02 00:51:15 +00:00
Reid Spencer
c3d87685ad
For PR1297:
...
Update these test cases to use proper signatures for bswap which is now
and overloaded intrinsic. Its name must be of the form llvm.bswap.i32.i32
since both the parameter and the result or of type "iAny". Also, the
bit counting intrinsics changed to always return i32.
llvm-svn: 35548
2007-04-01 07:36:28 +00:00
Reid Spencer
44259a29c0
Remove use of implementation keyword.
...
llvm-svn: 35412
2007-03-28 02:38:26 +00:00
Anton Korobeynikov
6e30008249
Add "feature" testcase for new switch lowering code
...
llvm-svn: 35345
2007-03-25 22:01:14 +00:00
Chris Lattner
4bdd578f8a
new testcase, corresponds to:
...
long long test(long long A, unsigned B) {
return (A + ((long long)B << 32));
}
llvm-svn: 34911
2007-03-04 20:39:47 +00:00
Chris Lattner
6053ad4252
New testcase for PR1239
...
llvm-svn: 34892
2007-03-03 23:42:50 +00:00
Jim Laskey
619d4bddc7
Test for PR1224.
...
llvm-svn: 34609
2007-02-25 21:43:21 +00:00
Chris Lattner
5af36e7e7c
testcase for PR1219
...
llvm-svn: 34550
2007-02-24 02:08:00 +00:00
Dale Johannesen
0552e3b580
adding PR 1200 comment by request
...
llvm-svn: 34360
2007-02-17 01:12:15 +00:00
Dale Johannesen
12920dda9e
Fixes PR 1200
...
llvm-svn: 34359
2007-02-17 00:44:34 +00:00
Chris Lattner
20abdffa00
sanity check for *basic* i128 arithmetic on all hosts.
...
llvm-svn: 34259
2007-02-13 23:59:21 +00:00
Chris Lattner
72df49f506
new testcase for PR1197
...
llvm-svn: 34215
2007-02-13 01:05:10 +00:00
Reid Spencer
ce380568b5
For PR761:
...
Remove "target endian/pointersize" or add "target datalayout" to make
the test parse properly or set the datalayout because defaults changes.
For PR645:
Make global names use the @ prefix.
For llvm-upgrade changes:
Fix test cases or completely remove use of llvm-upgrade for test cases
that cannot survive the new renaming or upgrade capabilities.
llvm-svn: 33533
2007-01-26 08:25:06 +00:00
Reid Spencer
83b3d82672
Regression is gone, don't try to find it on clean target.
...
llvm-svn: 33296
2007-01-17 07:59:14 +00:00