- May 27, 2011
-
-
Chandler Carruth authored
within class templates when they are necessary to complete the type of the member. The canonical example is code like: template <typename T> struct S { static const int arr[]; static const int x; static int f(); }; template <typename T> const int S<T>::arr[] = { 1, 2, 3 }; template <typename T> const int S<T>::x = sizeof(arr) / sizeof(arr[0]); template <typename T> int S<T>::f() { return x; } int x = S<int>::f(); We need to instantiate S<T>::arr's definition to pick up its initializer and complete the array type. This involves new code to specially handle completing the type of an expression where the type alone is insufficient. It also requires *updating* the expression with the newly completed type. Fortunately, all the other infrastructure is already in Clang to do the instantiation, do the completion, and prune out the unused bits of code that result from this instantiation. This addresses the initial bug in PR10001, and will be a step to fleshing out other cases where we need to work harder to complete an expression's type. Who knew we still had missing C++03 "features"? llvm-svn: 132172
-
Douglas Gregor authored
parameter types to be ill-formed. However, it relies on the completeness of method parameter types when producing metadata, e.g., for a protocol, leading IR generating to crash in such cases. Since there's no real way to tighten down the semantics of Objective-C here without breaking existing code, do something safe but lame: suppress the generation of metadata when this happens. Fixes <rdar://problem/9123036>. llvm-svn: 132171
-
Eli Friedman authored
One more debug line number miss in instcombine (although the code in question isn't actually in instcombine). llvm-svn: 132170
-
Dan Gohman authored
llvm-svn: 132168
-
Eli Friedman authored
Final step of instcombine debuginfo; switch a couple more places over to InsertNewInstWith, and use setDebugLoc for the cases which can't be easily handled by the automated mechanisms. llvm-svn: 132167
-
Chandler Carruth authored
This looks like it flagged an actual bug. Devang, please review. I added the parentheses that change behavior, but make the behavior more closely match commit log's intent. llvm-svn: 132165
-
Devang Patel authored
llvm-svn: 132164
-
Chad Rosier authored
crc32.[8|16|32] have been renamed to .crc32.32.[8|16|32] and crc64.[8|16|32] have been renamed to .crc32.64.[8|64]. llvm-svn: 132163
-
Eric Christopher authored
llvm-svn: 132162
-
Devang Patel authored
llvm-svn: 132161
-
Johnny Chen authored
llvm-svn: 132160
-
- May 26, 2011
-
-
Johnny Chen authored
llvm-svn: 132152
-
Devang Patel authored
If llvm.dbg.value and the value instruction it refers to are far apart then iSel may not be able to find corresponding Node for llvm.dbg.value during DAG construction. Make iSel's life easier by removing this distance between llvm.dbg.value and its value instruction. llvm-svn: 132151
-
Johnny Chen authored
llvm-svn: 132150
-
Devang Patel authored
llvm-svn: 132149
-
Devang Patel authored
llvm-svn: 132148
-
Johnny Chen authored
llvm-svn: 132147
-
Benjamin Kramer authored
llvm-svn: 132146
-
Richard Trieu authored
Change the include stack of "instantiated from" notes to fall under the control of f/fno-diagnostics-show-note-include-stack flags. This should help with reducing diagnostic spew from macros instantiations. llvm-svn: 132143
-
Jim Ingham authored
llvm-svn: 132141
-
Akira Hatanaka authored
a function has any function calls. llvm-svn: 132140
-
Richard Trieu authored
Add a fix-it and better error recovery for improperly nested namespaces. This will give a better error message for cases such as "namespace foo::bar::baz {}" and a suggested fix-it of "namespace foo { namespace bar { namespace baz {} } }" llvm-svn: 132138
-
Howard Hinnant authored
llvm-svn: 132137
-
Rafael Espindola authored
llvm-svn: 132136
-
Galina Kistanova authored
Make few ExecutionEngine tests XFAIL for ARM, since ExecutionEngine is broken for ARM, please remove the following XFAIL when it will be fixed. llvm-svn: 132135
-
Howard Hinnant authored
llvm-svn: 132134
-
Rafael Espindola authored
llvm-svn: 132132
-
Akira Hatanaka authored
llvm-svn: 132131
-
Ted Kremenek authored
llvm-svn: 132130
-
Howard Hinnant authored
llvm-svn: 132129
-
Eric Christopher authored
llvm-svn: 132128
-
Akira Hatanaka authored
llvm-svn: 132127
-
Eli Friedman authored
llvm-svn: 132126
-
Howard Hinnant authored
llvm-svn: 132125
-
Greg Clayton authored
llvm-svn: 132123
-
Tobias Grosser authored
llvm-svn: 132120
-
Chandler Carruth authored
provide re-usable forms of the rest of the custom validation done here. Still no functionality changed here. With this it should be possible to have an expression-centric code path and a type-centric code path which don't duplicate logic. llvm-svn: 132118
-
Chandler Carruth authored
information in the previous comment which was preserved and moved with the vec_step implementation code. llvm-svn: 132117
-
Chandler Carruth authored
It has little overlap with other traits' requirements, so the resulting code is actually simpler. llvm-svn: 132116
-
Chandler Carruth authored
traits which uses the information embedded in the expression. Use this to simplify several interfaces which repeated information embedded in the expression through explicit arguments. I added an assertion that the only extra piece of data to come in from the parser matches what is stored in the expression. No functionality change intended here. Also cleaned up the doxygen comments for some of these methods and some formatting oddities. llvm-svn: 132115
-