Nick Lewycky
b3f57c8028
Using Inst->setMetadata(..., NULL) should be safe to remove metadata even when
...
there is non of that type to remove. This fixes a crasher in the particular
case where the instruction has metadata but no metadata storage in the context
(this is only possible if the instruction has !dbg but no other metadata info).
llvm-svn: 147285
2011-12-27 01:17:40 +00:00
Benjamin Kramer
5d07d63540
Give string constants generated by IRBuilder private linkage.
...
Fixes PR11640.
llvm-svn: 147144
2011-12-22 14:22:14 +00:00
Devang Patel
a57e0b8f49
Add support to add named metadata operand.
...
Patch by Andrew Wilkins!
llvm-svn: 146984
2011-12-20 19:29:36 +00:00
David Blaikie
576aba04f1
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
...
llvm-svn: 146960
2011-12-20 02:50:00 +00:00
Dan Gohman
7940e4e81d
Add basic generic CodeGen support for half.
...
llvm-svn: 146927
2011-12-20 00:02:33 +00:00
Dan Gohman
9c8c9a8f62
The powers that be have decided that LLVM IR should now support 16-bit
...
"half precision" floating-point with a first-class type.
This patch adds basic IR support (but not codegen support).
llvm-svn: 146786
2011-12-17 00:04:22 +00:00
Eli Friedman
f6ae3a7caf
Make constant folding for GEPs a bit more aggressive.
...
llvm-svn: 146639
2011-12-15 04:33:48 +00:00
Dan Gohman
1add31cc93
Move Instruction::isSafeToSpeculativelyExecute out of VMCore and
...
into Analysis as a standalone function, since there's no need for
it to be in VMCore. Also, update it to use isKnownNonZero and
other goodies available in Analysis, making it more precise,
enabling more aggressive optimization.
llvm-svn: 146610
2011-12-14 23:49:11 +00:00
Nick Lewycky
e21bd35d14
Fix unused value warning for value used only in assert.
...
llvm-svn: 146440
2011-12-12 22:59:34 +00:00
Daniel Dunbar
30d6a45140
LLVMBuild: Remove trailing newline, which irked me.
...
llvm-svn: 146409
2011-12-12 19:48:00 +00:00
Chandler Carruth
ed68325a38
Don't rely in there being one argument before we've actually identified
...
a function to upgrade. Also, simplify the code a bit at the expense of
one line.
llvm-svn: 146368
2011-12-12 10:57:20 +00:00
Chandler Carruth
d733f059d0
Teach the verifier to reject all non-constant arguments to the second
...
argument of the cttz and ctlz intrinsics.
llvm-svn: 146360
2011-12-12 04:36:02 +00:00
Chandler Carruth
083a91fab1
Switch llvm.cttz and llvm.ctlz to accept a second i1 parameter which
...
indicates whether the intrinsic has a defined result for a first
argument equal to zero. This will eventually allow these intrinsics to
accurately model the semantics of GCC's __builtin_ctz and __builtin_clz
and the X86 instructions (prior to AVX) which implement them.
This patch merely sets the stage by extending the signature of these
intrinsics and establishing auto-upgrade logic so that the old spelling
still works both in IR and in bitcode. The upgrade logic preserves the
existing (inefficient) semantics. This patch should not change any
behavior. CodeGen isn't updated because it can use the existing
semantics regardless of the flag's value.
Note that this will be followed by API updates to Clang and DragonEgg.
Reviewed by Nick Lewycky!
llvm-svn: 146357
2011-12-12 04:26:04 +00:00
Bill Wendling
d00c304509
Add dump method for debugging.
...
llvm-svn: 146293
2011-12-09 23:18:34 +00:00
Benjamin Kramer
933fd2afff
Push StringRefs through the metadata interface.
...
llvm-svn: 145934
2011-12-06 11:50:26 +00:00
Benjamin Kramer
f274d5feac
Add a little heuristic to Value::isUsedInBasicBlock to speed it up for small basic blocks.
...
- Calling getUser in a loop is much more expensive than iterating over a few instructions.
- Use it instead of the open-coded loop in AddrModeMatcher.
- 5% speedup on ARMDisassembler.cpp Release builds.
llvm-svn: 145810
2011-12-05 17:23:27 +00:00
Nadav Rotem
1a91e4381d
Add support for vectors of pointers.
...
llvm-svn: 145801
2011-12-05 06:29:09 +00:00
David Blaikie
d951c64db1
Add some missing anchors.
...
llvm-svn: 145578
2011-12-01 08:00:17 +00:00
Daniel Dunbar
4e00f5f8fd
build/CMake: Finish removal of add_llvm_library_dependencies.
...
llvm-svn: 145420
2011-11-29 19:25:30 +00:00
Chris Lattner
f80a86e2d4
Eli managed to kill off llvm.membarrier in llvm 3.0 also, this means
...
that mainline needs no autoupgrade logic for intrinsics yet, woohoo!
llvm-svn: 145178
2011-11-27 08:42:07 +00:00
Chris Lattner
5d92b20cf1
The llvm.atomic intrinsics *were* removed in LLVM 3.0 (in r141333), remove the
...
autoupgrade logic for 2.9 and before.
llvm-svn: 145176
2011-11-27 08:18:55 +00:00
Chris Lattner
84bf52737a
remove autoupgrade support for old forms of llvm.prefetch and the old
...
trampoline forms. Both of these were correct in LLVM 3.0, and we don't
need to support LLVM 2.9 and earlier in mainline.
llvm-svn: 145174
2011-11-27 07:42:04 +00:00
Chris Lattner
011a5bf0aa
remove autoupgrade support for really old-style debug info intrinsics.
...
I think this is the last of autoupgrade that can be removed in 3.1.
Can the atomic upgrade stuff also go?
llvm-svn: 145169
2011-11-27 06:18:33 +00:00
Chris Lattner
8067661775
remove some old autoupgrade logic
...
llvm-svn: 145167
2011-11-27 06:10:54 +00:00
Chris Lattner
321e2eedcc
remove autoupgrade support for LLVM 2.9 exception stuff. Mainline supports
...
LLVM 3.0 and later.
llvm-svn: 145165
2011-11-27 05:56:16 +00:00
Benjamin Kramer
4fab3375a7
Devirtualize Pass::getPassID, overriding it isn't useful and it gets called a lot.
...
While at it pull the trivial ctor in line.
llvm-svn: 145124
2011-11-24 21:14:11 +00:00
Joe Abbey
e195456bd9
Fixing a comment
...
llvm-svn: 145025
2011-11-21 04:42:21 +00:00
Owen Anderson
48a129b50e
Rename MVT::untyped to MVT::Untyped to match similar nomenclature.
...
llvm-svn: 144747
2011-11-16 01:02:57 +00:00
Benjamin Kramer
ea43fbc528
Remove Value::getNameStr. It has been deprecated for a while and provides no additional value over getName().
...
llvm-svn: 144657
2011-11-15 18:30:12 +00:00
Benjamin Kramer
a2f57dee6d
Remove all remaining uses of Value::getNameStr().
...
llvm-svn: 144648
2011-11-15 16:27:03 +00:00
Benjamin Kramer
720b712c77
Fold ConstantVector::isAllOnesValue into Constant::isAllOnesValue and simplify it.
...
llvm-svn: 144555
2011-11-14 19:12:20 +00:00
Daniel Dunbar
3760ebeebb
build: Add initial cut at LLVMBuild.txt files.
...
llvm-svn: 143634
2011-11-03 18:53:17 +00:00
Benjamin Kramer
a52073e263
Don't print two 0x prefixes when printing an address.
...
llvm-svn: 143549
2011-11-02 17:24:36 +00:00
Peter Collingbourne
24c42c8534
Add a pinned metadata name for fpaccuracy, and document it
...
llvm-svn: 143135
2011-10-27 19:19:14 +00:00
Mon P Wang
ed6360d273
The bitcode reader can create an shuffle with a place holder mask which it will
...
fix up later. For this special case, allow such a mask to be considered valid.
<rdar://problem/8622574>
llvm-svn: 142992
2011-10-26 00:34:48 +00:00
Eli Friedman
e8f8cf1f33
Refactor code from inlining and globalopt that checks whether a function definition is unused, and enhance it so it can tell that functions which are only used by a blockaddress are in fact dead. This probably doesn't happen much on most code, but the Linux kernel's _THIS_IP_ can trigger this issue with blockaddress. (GlobalDCE can also handle the given tescase, but we only run that at -O3.) Found while looking at PR11180.
...
llvm-svn: 142572
2011-10-20 05:23:42 +00:00
Benjamin Kramer
bc2d3cbf7e
Use a SmallVector for intrinsic argument types.
...
llvm-svn: 142259
2011-10-17 21:33:26 +00:00
Bill Wendling
584c5f9c62
Correct over-zealous removal of hack.
...
Some code want to check that *any* call within a function has the 'returns
twice' attribute, not just that the current function has one.
llvm-svn: 142221
2011-10-17 18:43:40 +00:00
Bill Wendling
2ee7de36b8
Now that we have the ReturnsTwice function attribute, this method is
...
obsolete. Check the attribute instead.
<rdar://problem/8031714>
llvm-svn: 142212
2011-10-17 18:22:52 +00:00
Chandler Carruth
9c33ff8a8b
Add a routine to swap branch instruction operands, and update any
...
profile metadata at the same time. Use it to preserve metadata attached
to a branch when re-writing it in InstCombine.
Add metadata to the canonicalize_branch InstCombine test, and check that
it is tranformed correctly.
Reviewed by Nick Lewycky!
llvm-svn: 142168
2011-10-17 01:11:57 +00:00
Benjamin Kramer
6009b2df99
Let printf do the formatting instead aligning strings ourselves.
...
While at it, merge some format strings.
llvm-svn: 142140
2011-10-16 16:30:34 +00:00
Chris Lattner
391d90c9a6
Make SMDiagnostic a little more sane. Instead of passing around note/warning/error as a
...
string, pass it around as an enum.
llvm-svn: 142107
2011-10-16 05:43:57 +00:00
Chris Lattner
c24bb1d147
constify array itself, don't iterate multiple times.
...
llvm-svn: 142013
2011-10-14 22:50:21 +00:00
Torok Edwin
47a6a6a1fc
ocaml bindings: add getopcode for constant and instruction, and int64_of_const.
...
llvm-svn: 141990
2011-10-14 20:37:49 +00:00
Torok Edwin
463c360a11
bindings: tab and indentation fixes of my previous commits
...
llvm-svn: 141989
2011-10-14 20:37:42 +00:00
Eric Christopher
a715203dda
Spacing.
...
llvm-svn: 141727
2011-10-11 22:58:58 +00:00
Matt Beaumont-Gay
92f76e7901
Move default to top of switch
...
llvm-svn: 141366
2011-10-07 16:27:01 +00:00
Eli Friedman
4d63ca106a
Remove the old atomic instrinsics. autoupgrade functionality is included with this patch.
...
llvm-svn: 141333
2011-10-06 23:20:49 +00:00
Matt Beaumont-Gay
13865f3e94
Fix -asserts build
...
llvm-svn: 141313
2011-10-06 20:59:09 +00:00
Torok Edwin
5a26a27370
Don't require C bindings opcode numbers to be kept in sync.
...
They are not in sync now, for example Bitcast would show up as LLVMCall.
So instead introduce 2 functions that map to and from the opcodes in the C
bindings.
llvm-svn: 141290
2011-10-06 12:39:34 +00:00