| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 57670
|
| |
|
|
|
|
|
|
| |
constants that don't fit in an int. This fixes
"this decimal constant is unsigned only in ISO C90"
warnings.
llvm-svn: 57668
|
| |
|
|
|
|
| |
floating point. This is only correct for x86-32 at the moment.
llvm-svn: 57667
|
| |
|
|
| |
llvm-svn: 57666
|
| |
|
|
|
|
| |
type T.
llvm-svn: 57665
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
struct s {};
void f() {
int a[10];
int (*p)[10];
p = &a;
(*p)[3] =1;
struct s d;
struct s *q;
q = &d;
}
We return the corresponding MemRegionVal for them.
llvm-svn: 57664
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
use a SUB instruction instead of an ADD, because -128 can be
encoded in an 8-bit signed immediate field, while +128 can't be.
This avoids the need for a 32-bit immediate field in this case.
A similar optimization applies to 64-bit adds with 0x80000000,
with the 32-bit signed immediate field.
To support this, teach tablegen how to handle 64-bit constants.
llvm-svn: 57663
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
shift counts, and patterns that match dynamic shift counts
when the subtract is obscured by a truncate node.
Add DAGCombiner support for recognizing rotate patterns
when the shift counts are defined by truncate nodes.
Fix and simplify the code for commuting shld and shrd
instructions to work even when the given instruction doesn't
have a parent, and when the caller needs a new instruction.
These changes allow LLVM to use the shld, shrd, rol, and ror
instructions on x86 to replace equivalent code using two
shifts and an or in many more cases.
llvm-svn: 57662
|
| |
|
|
|
|
|
|
|
|
| |
structure.
- I'm not sure yet about the behavior, but this at least prevents the
crash.
Add some asserts on RegionStack usage.
llvm-svn: 57661
|
| |
|
|
| |
llvm-svn: 57660
|
| |
|
|
|
|
| |
and lvalue contexts.
llvm-svn: 57659
|
| |
|
|
|
|
| |
array and field accesses.
llvm-svn: 57658
|
| |
|
|
|
|
|
|
|
|
|
| |
regions.
Remove GRExprEngine::getLVal and RValues::MakeVal.
Enhance StoreManager "GetLValue" methods to dispatch for specific kinds of lvalue queries, as opposed to interogating the expression tree (GRExprEngine already does this).
Added FIXMEs. In particular, we no longer "assume" that a base pointer in a field/array access is null (this logic was removed). Perhaps we should do this when fetching the lvalue for fields and array elements?
llvm-svn: 57657
|
| |
|
|
| |
llvm-svn: 57654
|
| |
|
|
| |
llvm-svn: 57653
|
| |
|
|
| |
llvm-svn: 57649
|
| |
|
|
| |
llvm-svn: 57646
|
| |
|
|
| |
llvm-svn: 57645
|
| |
|
|
| |
llvm-svn: 57644
|
| |
|
|
|
|
|
|
| |
- Disables the freeing of the ASTContext and the TranslationUnit
after parsing & sema.
- Primarily for timing the impact on -fsyntax-only timings.
llvm-svn: 57643
|
| |
|
|
| |
llvm-svn: 57642
|
| |
|
|
|
|
|
|
|
|
|
|
| |
using the 'volatile' qualifier. This should not have any operational consequences
on code, because tags should always be stripped off (giving a non-volatile pointer)
before dereferencing. The new qualification is there to catch some attempts to use
tagged pointers in a context where an untagged pointer is appropriate.
Notably this approach does not catch dereferencing of tagged pointers, but helps
in separating the two concepts a bit.
llvm-svn: 57641
|
| |
|
|
|
|
|
|
|
| |
not match type of ivar
and
http://llvm.org/bugs/show_bug.cgi?id=2893
llvm-svn: 57640
|
| |
|
|
| |
llvm-svn: 57636
|
| |
|
|
|
|
| |
uninitialized in these functions with gcc-4.3.
llvm-svn: 57635
|
| |
|
|
|
|
| |
warning on x86-64 with gcc-4.3.
llvm-svn: 57634
|
| |
|
|
| |
llvm-svn: 57633
|
| |
|
|
|
|
|
| |
- Implement fast path when value easily fits in a uint64.
- ~6x faster, translates to 1-2% on Cocoa.h
llvm-svn: 57632
|
| |
|
|
| |
llvm-svn: 57631
|
| |
|
|
|
|
|
| |
x86 backend. These will all be answered with "patches welcome", so
a PR doesn't help drive them along.
llvm-svn: 57630
|
| |
|
|
| |
llvm-svn: 57629
|
| |
|
|
|
|
|
| |
basically working, feel free to remove the tag. The other targets have
really basic things that break them.
llvm-svn: 57628
|
| |
|
|
|
|
|
|
| |
new VisitLValue method is added to replace the old VisitLVal. The semantics
model becomes more explicit to separate rvalue evaluation from lvalue
evaluation.
llvm-svn: 57627
|
| |
|
|
| |
llvm-svn: 57626
|
| |
|
|
| |
llvm-svn: 57625
|
| |
|
|
|
|
|
|
| |
floats.
- With testcase, which also has some other things GCC folds but we
don't commented out in it.
llvm-svn: 57624
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is to encode the state of the #pragma pack stack as an attribute when
the structure is declared.
- Extend PackedAttr to take an alignment (in bits), and reuse for
both __attribute__((packed)) (which takes no argument, instead
packing tightly (to "minimize the memory required") and for #pragma
pack (which allows specification of the maximum alignment in
bytes). __attribute__((packed)) is just encoded as Alignment=1.
This conflates two related but different mechanisms, but it didn't
seem worth another attribute.
- I have attempted to follow the MSVC semantics as opposed to the gcc
ones, since if I understand correctly #pragma pack originated with
MSVC. The semantics are generally equivalent except when the stack
is altered during the definition of a structure; its not clear if
anyone does this in practice. See testcase if curious.
llvm-svn: 57623
|
| |
|
|
| |
llvm-svn: 57622
|
| |
|
|
| |
llvm-svn: 57621
|
| |
|
|
|
|
|
| |
additional information in Loads, Stores, Calls, Invokes,
InsertValueInsts, and ExtractValueInsts.
llvm-svn: 57620
|
| |
|
|
| |
llvm-svn: 57619
|
| |
|
|
| |
llvm-svn: 57618
|
| |
|
|
|
|
|
|
| |
because it declares a std::vector<MachineMove>, and strict
concept checking requires the definition of MachineMove to be
available.
llvm-svn: 57617
|
| |
|
|
|
|
|
| |
copies of a value, and add several additional utilities to make
SmallVector better conform to the Container concept.
llvm-svn: 57616
|
| |
|
|
|
|
| |
passing in a function object.
llvm-svn: 57615
|
| |
|
|
|
|
|
| |
computation. A def of a register doesn't necessarily kill
live super-registers.
llvm-svn: 57614
|
| |
|
|
| |
llvm-svn: 57613
|
| |
|
|
|
|
| |
an unindexed load.
llvm-svn: 57612
|
| |
|
|
|
|
|
|
| |
a direct initializer for a variable defition).
Idea originated from here: http://thread.gmane.org/gmane.comp.gcc.devel/101524
llvm-svn: 57609
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
to find opportunities for store-to-load forwarding or load CSE,
in the same way that visitStore scans back to do DSE. Also, define
a new helper function for testing whether the addresses of two
memory accesses are known to have the same value, and use it in
both visitStore and visitLoad.
These two changes allow instcombine to eliminate loads in code
produced by front-ends that frequently emit obviously redundant
addressing for memory references.
llvm-svn: 57608
|