From: Nick Lewycky Date: Wed, 25 Feb 2009 06:52:48 +0000 (+0000) Subject: Add a totally synthetic situation I came up with while looking at a bug in X-Git-Tag: android-x86-6.0-r1~1003^2~22273 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=20babb112c8d8aab89a5e86347e2bfdb90603ce8;p=android-x86%2Fexternal-llvm.git Add a totally synthetic situation I came up with while looking at a bug in related code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65437 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/README.txt b/lib/Target/README.txt index 09e5433578c..341c5c1ff47 100644 --- a/lib/Target/README.txt +++ b/lib/Target/README.txt @@ -1690,6 +1690,7 @@ For example: store of float into { {{}}, float } could be turned into a store to the float directly. //===---------------------------------------------------------------------===// + #include double foo(double a) { return sin(a); } @@ -1704,3 +1705,19 @@ vs: foo: jmp sin +//===---------------------------------------------------------------------===// + +Instcombine should replace the load with a constant in: + + static const char x[4] = {'a', 'b', 'c', 'd'}; + + unsigned int y(void) { + return *(unsigned int *)x; + } + +It currently only does this transformation when the size of the constant +is the same as the size of the integer (so, try x[5]) and the last byte +is a null (making it a C string). There's no need for these restrictions. + +//===---------------------------------------------------------------------===// +