summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-27 04:08:33 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-27 04:08:33 +0000
commit537a302d1ae9ed81420ec3015699e556371c9579 (patch)
treefbcedc84d83a1fc8faecd54e4bf37d309454a4ea /llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
parent6b356b18b41172f6356c977c7bba4bf911280cae (diff)
downloadbcm5719-llvm-537a302d1ae9ed81420ec3015699e556371c9579.tar.gz
bcm5719-llvm-537a302d1ae9ed81420ec3015699e556371c9579.zip
Distinguish early clobber output operands from clobbered registers.
Both become <earlyclobber> defs on the INLINEASM MachineInstr, but we now use two different asm operand kinds. The new Kind_Clobber is treated identically to the old Kind_RegDefEarlyClobber for now, but x87 floating point stack inline assembly does care about the difference. This will pop a register off the stack: asm("fstp %st" : : "t"(x) : "st"); While this will pop the input and push an output: asm("fst %st" : "=&t"(r) : "t"(x)); We need to know if ST0 was a clobber or an output operand, and we can't depend on <dead> flags for that. llvm-svn: 133902
Diffstat (limited to 'llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud