| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
LP64. It fails with +Asserts for Win64.
llvm-svn: 163708
|
| |
|
|
|
|
|
|
| |
LLP64-incompatible tests.
I think some of them could be rewritten to fit also LLP64.
llvm-svn: 163699
|
| |
|
|
| |
llvm-svn: 163581
|
| |
|
|
|
|
|
|
|
| |
the trap BB out of the individual checks and into a common function, to prepare
for making this code call into a runtime library. Rename the existing EmitCheck
to EmitTypeCheck to clarify it and to move it out of the way of the new
EmitCheck.
llvm-svn: 163451
|
| |
|
|
|
|
|
| |
handle. Otherwise, the AsmParser will explode if we try to generate an
object files.
llvm-svn: 163345
|
| |
|
|
|
|
|
| |
and output expressions much like that in GNU-style inline assembly. Output
expressions are first. Do this for MS-style inline asms.
llvm-svn: 163342
|
| |
|
|
|
|
|
|
|
| |
This patch uses a new ABIInfo implementation specific to the le32
target, rather than falling back to DefaultABIInfo. Its behavior is
basically the same, but it also allows the regparm argument attribute.
It also includes basic tests for argument codegen and attributes.
llvm-svn: 163333
|
| |
|
|
| |
llvm-svn: 163232
|
| |
|
|
| |
llvm-svn: 163182
|
| |
|
|
|
|
|
| |
implementation does not co-exist well with how the sideeffect and alignstack
attributes are handled.
llvm-svn: 163173
|
| |
|
|
|
|
|
| |
assume that if the 1st operands is an expression and the instruction mayStore,
then it is a memory definition.
llvm-svn: 163144
|
| |
|
|
| |
llvm-svn: 162800
|
| |
|
|
| |
llvm-svn: 162796
|
| |
|
|
|
|
| |
llvm values.
llvm-svn: 162771
|
| |
|
|
| |
llvm-svn: 162769
|
| |
|
|
|
|
|
| |
- The increment needs to be signed value to preserve the original value when
its data type is larger than 64-bit integer.
llvm-svn: 162766
|
| |
|
|
|
|
|
|
| |
really need the store.
This avoids emitting many dead GEPs for large zero-initialized arrays.
llvm-svn: 162701
|
| |
|
|
|
|
| |
The patch reviewed by Akira Hatanaka.
llvm-svn: 162669
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
by this mode, and also check for signed left shift overflow. The rules for the
latter are a little subtle:
* neither C89 nor C++98 specify the behavior of a signed left shift at all
* in C99 and C11, shifting a 1 bit into the sign bit has undefined behavior
* in C++11, with core issue 1457, shifting a 1 bit *out* of the sign bit has
undefined behavior
As of this change, we use the C99 rules for all C language variants, and the
C++11 rules for all C++ language variants. Once we have individual
-fcatch-undefined-behavior= flags, this should be revisited.
llvm-svn: 162634
|
| |
|
|
|
|
|
|
| |
* when checking that a pointer or reference refers to appropriate storage for a type, also check the alignment and perform a null check
* check that references are bound to appropriate storage
* check that 'this' has appropriate storage in member accesses and member function calls
llvm-svn: 162523
|
| |
|
|
|
|
|
| |
of a pointer for builtin emission, instead of just depending on the type of the
pointee. <rdar://problem/11314941>.
llvm-svn: 162425
|
| |
|
|
|
|
|
| |
The parser still can't handle all cases, so fall back to emitting a simple
MSAsmStmt if we get into trouble.
llvm-svn: 162382
|
| |
|
|
|
|
|
|
| |
The conditions described by POSIX can never happen with IEEE-754 floats.
When the function is const we can emit a single sse4.1 instruction for
it, without losing anything :)
llvm-svn: 162379
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There were missed optimizations when the system headers didn't have attributes
in place, specifically:
- Add copysign, exp2, log2, nearbyint, rint and trunc to the list.
These are functions that get inlined by LLVM's optimizer, but only when they
have the right attributes.
- Mark copysign, fabs, fmax, fmin and trunc const unconditionally.
Previously these were only const with -fno-math-errno, but they never set
errno per POSIX.
For ceil/floor/nearbyint/round I'm not aware of any implementation that sets
errno, but POSIX says it may signal overflow so I left them alone for now.
llvm-svn: 162375
|
| |
|
|
| |
llvm-svn: 162288
|
| |
|
|
|
|
|
|
|
| |
just trying to show it did not crash and burn.
This patch checks that the resultant .ll contents
are correct.
llvm-svn: 162249
|
| |
|
|
|
|
| |
correctly. PR13643.
llvm-svn: 162226
|
| |
|
|
|
|
|
|
| |
These require special handling, which we don't currently handle. This is being
put in place to ensure we don't do invalid symbol table lookups or try to parse
invalid assembly. The test cases just makes sure the latter isn't happening.
llvm-svn: 162050
|
| |
|
|
| |
llvm-svn: 162038
|
| |
|
|
|
|
|
|
| |
variables, function or label references. The former is a potential clobber.
The latter is either an input or an output. Unfortunately, it's difficult to
test this patch at the moment, but the added test case will eventually do so.
llvm-svn: 162026
|
| |
|
|
| |
llvm-svn: 162003
|
| |
|
|
|
|
| |
Add test case.
llvm-svn: 162002
|
| |
|
|
| |
llvm-svn: 161991
|
| |
|
|
|
|
|
|
|
|
|
|
| |
statement. For example,
if (x)
__asm out dx, ax __asm out dx, ax
results in a single inline asm statement (i.e., both "out dx, ax" statements are
predicated on if(x)).
llvm-svn: 161986
|
| |
|
|
|
|
|
| |
Changed the alignment of an LValue to be 64 bits so that we can handle
alignment values up to half of a 64-bit address space.
llvm-svn: 161971
|
| |
|
|
|
|
|
| |
This is a reapplication of r161914 now that the scoping issue has been resolved
in r161966.
llvm-svn: 161967
|
| |
|
|
| |
llvm-svn: 161931
|
| |
|
|
| |
llvm-svn: 161914
|
| |
|
|
| |
llvm-svn: 161908
|
| |
|
|
|
|
| |
calls. // rdar://8315199
llvm-svn: 161891
|
| |
|
|
| |
llvm-svn: 161890
|
| |
|
|
|
|
|
|
|
| |
The backend has to legalize i64 types by splitting them into two 32-bit pieces,
which leads to poor quality code. If we produce code for these intrinsics that
uses one-element vector types, which can live in Neon vector registers without
getting split up, then the generated code is much better. Radar 11998303.
llvm-svn: 161879
|
| |
|
|
|
|
| |
rdar://9877866
llvm-svn: 161790
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The AsmParser expects a single asm instruction, but valid ms-style inline asm
statements may contain multiple instructions.
This happens with asm blocks
__asm {
mov ebx, eax
mov ecx, ebx
}
or when multiple asm statements are adjacent to one another
__asm mov ebx, eax
__asm mov ecx, ebx
and
__asm mov ebx, eax __asm mov ecx, ebx
Currently, asm blocks are not properly handled.
llvm-svn: 161780
|
| |
|
|
|
|
|
| |
rdar://9877866
PR://13350
llvm-svn: 161694
|
| |
|
|
| |
llvm-svn: 161642
|
| |
|
|
|
|
| |
from before r159168. PR13562.
llvm-svn: 161554
|
| |
|
|
|
|
| |
only machine specific clobbers are modeled.
llvm-svn: 161524
|
| |
|
|
|
|
| |
crashers at the moment (and coincidentally this case was causing a crash).
llvm-svn: 161520
|
| |
|
|
|
|
| |
The patch reviewed by Akira Hatanaka.
llvm-svn: 161333
|