aboutsummaryrefslogtreecommitdiff
path: root/lib/Support/ManagedStatic.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-01-30 22:32:46 +0000
committerChris Lattner <sabre@nondot.org>2007-01-30 22:32:46 +0000
commitc5eff4488b9c700d9c4c459d1222640850164c03 (patch)
tree4a2195b407bfa079bbb7a894633b6f58086c4824 /lib/Support/ManagedStatic.cpp
parentc60e76d139a96cc8bb7454929172cdb992e16971 (diff)
Symbolically evaluate constant expressions like &A[123] - &A[4].f.
This occurs in C++ code like: #include <iostream> #include <iterator> int a[] = { 1, 2, 3, 4, 5 }; int main() { using namespace std; copy(a, a + sizeof(a)/sizeof(a[0]), ostream_iterator<int>(cout, "\n")); return 0; } Before we would decide the loop trip count is: sdiv (i32 sub (i32 ptrtoint (i32* getelementptr ([5 x i32]* @a, i32 0, i32 5) to i32), i32 ptrtoint ([5 x i32]* @a to i32)), i32 4) Now we decide it is "5". Amazing. This code will need to be refactored, but I'm doing that as a separate commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33665 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/ManagedStatic.cpp')
0 files changed, 0 insertions, 0 deletions