From ae1c1ffacd160666df0daafb5dcc62eb33dfbf19 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 23 Aug 2003 23:38:59 +0000 Subject: [PATCH] new testcase distilled from 176.gcc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8094 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../2003-08-23-RegisterAllocatePhysReg.ll | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 test/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll diff --git a/test/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll b/test/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll new file mode 100644 index 00000000000..fa7df629138 --- /dev/null +++ b/test/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll @@ -0,0 +1,30 @@ +; This testcase exposes a bug in the local register allocator where it runs out +; of registers (due to too many overlapping live ranges), but then attempts to +; use the ESP register (which is not allocatable) to hold a value. + +int %main(uint %A) { + %Ap2 = alloca uint, uint %A ; ESP gets used again... + %B = add uint %A, 1 ; Produce lots of overlapping live ranges + %C = add uint %A, 2 + %D = add uint %A, 3 + %E = add uint %A, 4 + %F = add uint %A, 5 + %G = add uint %A, 6 + %H = add uint %A, 7 + %I = add uint %A, 8 + %J = add uint %A, 9 + %K = add uint %A, 10 + + store uint %A, uint *%Ap2 ; Uses of all of the values + store uint %B, uint *%Ap2 + store uint %C, uint *%Ap2 + store uint %D, uint *%Ap2 + store uint %E, uint *%Ap2 + store uint %F, uint *%Ap2 + store uint %G, uint *%Ap2 + store uint %H, uint *%Ap2 + store uint %I, uint *%Ap2 + store uint %J, uint *%Ap2 + store uint %K, uint *%Ap2 + ret int 0 +} -- 2.34.1