- Jul 30, 2009
-
-
Benjamin Kramer authored
llvm-svn: 77597
-
Benjamin Kramer authored
llvm-svn: 77589
-
Zhongxing Xu authored
llvm-svn: 77587
-
Sanjiv Gupta authored
Allow targets to define libcall names for mem(cpy,set,move) intrinsics, rather than hardcoding them in DAG lowering. llvm-svn: 77586
-
Zhongxing Xu authored
Move all components creation code into AnalysisConsumer::DigestAnalyzerOptions(). llvm-svn: 77585
-
Evan Cheng authored
llvm-svn: 77584
-
Evan Cheng authored
I've changed the semantics of MERGE_VALUES a bit. It's now allowed to live until scheduling. It's deleted when the scheduler translate DAG nodes to machine instructions. This is currently used by X86 to handle atomic_load_add when the output of the node is not used. I believe there is a better solution. But I find MERGE_VALUES useful for selecting multi-output node when the dead output can be selected as a IMPLICIT_DEF. llvm-svn: 77583
-
Evan Cheng authored
Optimize some common usage patterns of atomic built-ins __sync_add_and_fetch() and __sync_sub_and_fetch. When the return value is not used (i.e. only care about the value in the memory), x86 does not have to use add to implement these. Instead, it can use add, sub, inc, dec instructions with the "lock" prefix. This is currently implemented using a bit of instruction selection trick. The issue is the target independent pattern produces one output and a chain and we want to map it into one that just output a chain. The current trick is to select it into a merge_values with the first definition being an implicit_def. The proper solution is to add new ISD opcodes for the no-output variant. DAG combiner can then transform the node before it gets to target node selection. Problem #2 is we are adding a whole bunch of x86 atomic instructions when in fact these instructions are identical to the non-lock versions. We need a way to add target specific information to target nodes and have this information carried over to machine instructions. Asm printer (or JIT) can use this information to add the "lock" prefix. llvm-svn: 77582
-
Daniel Dunbar authored
a Twine, e.g., for names). - I am a little ambivalent about this; we don't want the string conversion of utostr, but using overload '+' mixed with string and integer arguments is sketchy. On the other hand, this particular usage is something of an idiom. llvm-svn: 77579
-
Sanjiv Gupta authored
declaration for them. llvm-svn: 77578
-
Daniel Dunbar authored
llvm-svn: 77577
-
Daniel Dunbar authored
explicitly. llvm-svn: 77576
-
Argyrios Kyrtzidis authored
llvm-svn: 77575
-
Ryan Flynn authored
llvm-svn: 77573
-
Daniel Dunbar authored
llvm-svn: 77571
-
Andreas Bolka authored
llvm-svn: 77570
-
Daniel Dunbar authored
llvm-svn: 77569
-
Nate Begeman authored
llvm-svn: 77568
-
Daniel Dunbar authored
value. llvm-svn: 77566
-
Dan Gohman authored
due to x86 encoding restrictions. This is currently off by default because it may cause code quality regressions. This is for PR4572. llvm-svn: 77565
-
Dan Gohman authored
llvm-svn: 77564
-
Zhongxing Xu authored
AnalysisContext. llvm-svn: 77563
-
Eli Friedman authored
ever trigger). Add an "unsupported" case that triggers for C++ code. It would be nice if someone would implement this properly... it shouldn't be too hard, but I haven't looked closely at the relevant code. llvm-svn: 77562
-
Mike Stump authored
llvm-svn: 77560
-
Devang Patel authored
llvm-svn: 77559
-
Dan Gohman authored
llvm-svn: 77558
-
Bob Wilson authored
llvm-svn: 77557
-
Mike Stump authored
that we would silently do bad things with virtual bases in the layout code, so, we just turn them off. When people do better things with them, we can turn them back on. llvm-svn: 77556
-
Eli Friedman authored
llvm-svn: 77555
-
Fariborz Jahanian authored
in current class. llvm-svn: 77554
-
Dan Gohman authored
llvm-svn: 77553
-
Eli Friedman authored
llvm-svn: 77552
-
Argyrios Kyrtzidis authored
-Accept an ObjC method and find all message expressions that this method may respond to. -Accept an ObjC message expression and find all methods that may respond to it. llvm-svn: 77551
-
Devang Patel authored
llvm-svn: 77550
-
Devang Patel authored
llvm-svn: 77549
-
Argyrios Kyrtzidis authored
llvm-svn: 77548
-
Argyrios Kyrtzidis authored
llvm-svn: 77547
-
Douglas Gregor authored
There's no point in going through the getAs<TagType> stuff to find the definition of a tag, since tags rarely have more than one or two declarations llvm-svn: 77546
-
Argyrios Kyrtzidis authored
llvm-svn: 77545
-
Argyrios Kyrtzidis authored
llvm-svn: 77544
-