r180874 - [inline asm] Add a test case for r180873. Test case needs to be on the clang

Chad Rosier mcrosier at apple.com
Tue May 7 15:18:59 PDT 2013


On May 7, 2013, at 3:14 PM, Eric Christopher <echristo at gmail.com> wrote:

> I saw that. The original testcase for that code has a .ll input.
> What's different?

>From LLVMContext:
void LLVMContext::emitError(unsigned LocCookie, const Twine &ErrorStr) {
00116   // If there is no error handler installed, just print the error and exit.
00117   if (pImpl->InlineAsmDiagHandler == 0) {
00118     errs() << "error: " << ErrorStr << "\n";
00119     exit(1);
00120   }
00121 
00122   // If we do have an error handler, we can report the error and keep going.
00123   SMDiagnostic Diag("", SourceMgr::DK_Error, ErrorStr.str());
00124 
00125   pImpl->InlineAsmDiagHandler(Diag, pImpl->InlineAsmDiagContext, LocCookie);
00126 }

If we test directly with a .ll file the InlineAsmDiagHandler will be NULL.  Thus, only the first error will be emitted and llc will exit.
Alternatively, if we invoke clang the diagnostic handler will be in place, so we can report multiple errors and then exit, which is in fact the very fix in r180874.
Hope that makes sense.

 Chad

> 
> -eric
> 
> On Tue, May 7, 2013 at 3:11 PM, Chad Rosier <mcrosier at apple.com> wrote:
>> 
>> On May 7, 2013, at 3:08 PM, Eric Christopher <echristo at gmail.com> wrote:
>> 
>>> Wait, are you depending upon an error from the backend for this? If
>>> so, what's causing us to be unable to check it from a .ll file?
>> 
>> See commit message.  Specifically, the part about needing clang to add the diagnostics handler.
>> 
>> Chad
>> 
>>> 
>>> -eric
>>> 
>>> On Wed, May 1, 2013 at 12:50 PM, Chad Rosier <mcrosier at apple.com> wrote:
>>>> Author: mcrosier
>>>> Date: Wed May  1 14:50:45 2013
>>>> New Revision: 180874
>>>> 
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=180874&view=rev
>>>> Log:
>>>> [inline asm] Add a test case for r180873. Test case needs to be on the clang
>>>> side because we need an inline asm diagnostics handler in place.  Unfortunately,
>>>> we emit a .s file because we need to build the SelectionDAG to hit the backend
>>>> issue.
>>>> rdar://13446483
>>>> 
>>>> 
>>>> Added:
>>>>   cfe/trunk/test/CodeGen/arm-asm-diag.c
>>>> 
>>>> Added: cfe/trunk/test/CodeGen/arm-asm-diag.c
>>>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/arm-asm-diag.c?rev=180874&view=auto
>>>> ==============================================================================
>>>> --- cfe/trunk/test/CodeGen/arm-asm-diag.c (added)
>>>> +++ cfe/trunk/test/CodeGen/arm-asm-diag.c Wed May  1 14:50:45 2013
>>>> @@ -0,0 +1,23 @@
>>>> +// REQUIRES: arm-registered-target
>>>> +// RUN: %clang_cc1 -triple armv7 %s -S -o /dev/null 2>&1 | Filecheck %s
>>>> +
>>>> +// rdar://13446483
>>>> +typedef __attribute__((neon_vector_type(2))) long long int64x2_t;
>>>> +typedef struct int64x2x4_t {
>>>> +  int64x2_t val[4];
>>>> +} int64x2x4_t;
>>>> +int64x2x4_t t1(const long long a[]) {
>>>> +  int64x2x4_t r;
>>>> +  __asm__("vldm %[a], { %q[r0], %q[r1], %q[r2], %q[r3] }"
>>>> +          : [r0] "=r"(r.val[0]), // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
>>>> +            [r1] "=r"(r.val[1]), // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
>>>> +            [r2] "=r"(r.val[2]), // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
>>>> +            [r3] "=r"(r.val[3])  // expected-warning {{the value is truncated when put into register, use a modifier to specify the size}}
>>>> +          : [a] "r"(a));
>>>> +  return r;
>>>> +}
>>>> +// We should see all four errors, rather than report a fatal error after the first.
>>>> +// CHECK: error: non-trivial scalar-to-vector conversion, possible invalid constraint for vector type
>>>> +// CHECK: error: non-trivial scalar-to-vector conversion, possible invalid constraint for vector type
>>>> +// CHECK: error: non-trivial scalar-to-vector conversion, possible invalid constraint for vector type
>>>> +// CHECK: error: non-trivial scalar-to-vector conversion, possible invalid constraint for vector type
>>>> 
>>>> 
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits at cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130507/17367b11/attachment.html>


More information about the cfe-commits mailing list