On May 7, 2013, at 3:14 PM, Eric Christopher <[email protected]> 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 <[email protected]> wrote:
>> 
>> On May 7, 2013, at 3:08 PM, Eric Christopher <[email protected]> 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 <[email protected]> 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
>>>> [email protected]
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>> 

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to