| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
|  | 
llvm-svn: 78110
 | 
| | 
| 
| 
| 
| 
| 
|  | 
For other VLDn and VSTn operations, we need to list the multiple registers
explicitly anyway, so there's no point in special-casing this one usage.
llvm-svn: 78109
 | 
| | 
| 
| 
|  | 
llvm-svn: 78108
 | 
| | 
| 
| 
| 
| 
|  | 
This fixes PR4528.
llvm-svn: 78107
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
scavenger.
Imp-def is *not* allowed to redefine a live register.
Imp-use is *not* allowed to use a dead register.
llvm-svn: 78106
 | 
| | 
| 
| 
|  | 
llvm-svn: 78105
 | 
| | 
| 
| 
|  | 
llvm-svn: 78104
 | 
| | 
| 
| 
| 
| 
| 
|  | 
still get "intel syntax" instructions from llc with  
-x86-asm-syntax=intel
llvm-svn: 78103
 | 
| | 
| 
| 
|  | 
llvm-svn: 78102
 | 
| | 
| 
| 
|  | 
llvm-svn: 78101
 | 
| | 
| 
| 
|  | 
llvm-svn: 78100
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
functions.
 - Fix variant flattening when the variant embeds an operand reference.
 - Ignore instructions which reference an operand multiple times (e.g., "xorb
   $dst, $dst"), and operands which have extra flags (e.g., "$dst:subreg32").
llvm-svn: 78099
 | 
| | 
| 
| 
| 
| 
| 
|  | 
distinguish that the result is errno, so it can't use it to provide more
information about the error (it also exposes the numeric value of errno).
llvm-svn: 78098
 | 
| | 
| 
| 
|  | 
llvm-svn: 78097
 | 
| | 
| 
| 
| 
| 
| 
|  | 
the masm backend.  If anyone cares about masm in the future,
we'll have semantic sections it can hang off of.
llvm-svn: 78096
 | 
| | 
| 
| 
| 
| 
| 
|  | 
For an undef operand, MO.getReg() is meaningless and we should not use it.
Undef operands should be skipped entirely.
llvm-svn: 78095
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
random variables?
  --This line, and those below, will be ignored--
M    lib/CodeGen/CGCXX.cpp
llvm-svn: 78094
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
of registers.
When LowerExtract eliminates an EXTRACT_SUBREG with a kill flag, it moves the
kill flag to the place where the sub-register is killed. This can accidentally
overlap with the use of a sibling sub-register, and we have trouble.
In the test case we have this code:
Live Ins: %R0 %R1 %R2
	%R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
	%R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
	%R1L<def> = EXTRACT_SUBREG %R1<kill>, 1
	%R0L<def> = EXTRACT_SUBREG %R0<kill>, 1
	%R0H<def> = ADD16 %R2H<kill>, %R2L<kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>
subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: eliminated!
subreg: killed here: %R0H<def> = ADD16 %R2H, %R2L, %R2<imp-use,kill>, %AZ<imp-def>, %AN<imp-def>, %AC0<imp-def>, %V<imp-def>, %VS<imp-def>
The kill flag on %R2 is moved to the last instruction, and the live range overlaps with the definition of %R2H:
*** Bad machine code: Redefining a live physical register ***
- function:    f
- basic block:  0x18358c0 (#0)
- instruction: %R2H<def> = LOAD16fi <fi#-1>, 0, Mem:LD(2,4) [FixedStack-1 + 0]
Register R2H was defined but already live.
The fix is to replace EXTRACT_SUBREG with IMPLICIT_DEF instead of eliminating
it completely:
subreg: CONVERTING: %R2L<def> = EXTRACT_SUBREG %R2<kill>, 1
subreg: replace by: %R2L<def> = IMPLICIT_DEF %R2<kill>
Note that these IMPLICIT_DEF instructions survive to the asm output. It is
necessary to fix the stack-color-with-reg test case because of that.
llvm-svn: 78093
 | 
| | 
| 
| 
|  | 
llvm-svn: 78092
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Implicit operands no longer get a free pass: Imp-use requires a live register
and imp-def requires a dead register.
There is also no special rule allowing redefinition of a sub-register when the
super-register is live. The super register must have imp-kill+imp-def operands
instead.
llvm-svn: 78090
 | 
| | 
| 
| 
| 
| 
|  | 
The only exception is CC.
llvm-svn: 78089
 | 
| | 
| 
| 
|  | 
llvm-svn: 78086
 | 
| | 
| 
| 
|  | 
llvm-svn: 78085
 | 
| | 
| 
| 
|  | 
llvm-svn: 78084
 | 
| | 
| 
| 
|  | 
llvm-svn: 78083
 | 
| | 
| 
| 
|  | 
llvm-svn: 78082
 | 
| | 
| 
| 
| 
| 
|  | 
to enable. Added patterns for some binary FP operations.
llvm-svn: 78081
 | 
| | 
| 
| 
|  | 
llvm-svn: 78077
 | 
| | 
| 
| 
| 
| 
|  | 
canonical types.
llvm-svn: 78076
 | 
| | 
| 
| 
| 
| 
|  | 
on method type mismatches per Chris's comment.
llvm-svn: 78075
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
killed by another operand.
There is probably a better fix. Either 1) scavenger can look at other operands, or
2) livevariables can be smarter about kill markers. Patches welcome.
llvm-svn: 78072
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
transformation template (TreeTransform) that handles the
transformation and reconstruction of AST nodes. Template instantiation
for types is a (relatively small) customization of the generic tree
transformation.
llvm-svn: 78071
 | 
| | 
| 
| 
|  | 
llvm-svn: 78070
 | 
| | 
| 
| 
|  | 
llvm-svn: 78069
 | 
| | 
| 
| 
| 
| 
|  | 
__TEXT,__ustring section on darwin.
llvm-svn: 78068
 | 
| | 
| 
| 
| 
| 
|  | 
it is just being used as a prefix, so forward substitute it directly.
llvm-svn: 78067
 | 
| | 
| 
| 
| 
| 
|  | 
section on ELF targets.
llvm-svn: 78066
 | 
| | 
| 
| 
| 
| 
| 
|  | 
* Use "svn info" to get last revision in repo, will get matching tarballs
* Now run "svn -q" since "svn info" tells us the revision number
llvm-svn: 78065
 | 
| | 
| 
| 
|  | 
llvm-svn: 78060
 | 
| | 
| 
| 
|  | 
llvm-svn: 78059
 | 
| | 
| 
| 
| 
| 
|  | 
ldm / stm.
llvm-svn: 78057
 | 
| | 
| 
| 
| 
| 
|  | 
This fixes PR4666.
llvm-svn: 78056
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
add new concrete versions for 1/2/4-byte mergable strings.
These are not actually created yet.
llvm-svn: 78055
 | 
| | 
| 
| 
|  | 
llvm-svn: 78054
 | 
| | 
| 
| 
|  | 
llvm-svn: 78053
 | 
| | 
| 
| 
|  | 
llvm-svn: 78052
 | 
| | 
| 
| 
| 
| 
|  | 
ValidateRegisterVariable. Make this work for PPC.
llvm-svn: 78051
 | 
| | 
| 
| 
|  | 
llvm-svn: 78050
 | 
| | 
| 
| 
|  | 
llvm-svn: 78049
 | 
| | 
| 
| 
| 
| 
|  | 
around in a tree I forgot about.
llvm-svn: 78048
 |