[Lldb-commits] [PATCH] D19548: Fix TestRegisterVariables.py on Windows

Adrian McCarthy via lldb-commits lldb-commits at lists.llvm.org
Tue Apr 26 11:29:10 PDT 2016

amccarth created this revision.
amccarth added a reviewer: tfiala.
amccarth added a subscriber: lldb-commits.
Herald added a subscriber: aemerson.

32-bit Windows calling conventions, by default, don't pass arguments in registers, but this test expects at least one of them to be.

By adding __attribute__((regparm(x))) to the functions, we can get the compiler to enregister some of the parameters, and the test passes.

I don't think this should have a negative impact on other platforms, but I haven't tried.



Index: packages/Python/lldbsuite/test/lang/c/register_variables/test.c
--- packages/Python/lldbsuite/test/lang/c/register_variables/test.c
+++ packages/Python/lldbsuite/test/lang/c/register_variables/test.c
@@ -5,20 +5,20 @@
   int m2;
-void f1(int a, struct bar *b) __attribute__ ((noinline));
+void f1(int a, struct bar *b) __attribute__((noinline)) __attribute__((regparm(2)));
 void f1(int a, struct bar *b)
   b->m2 = b->m1 + a; // set breakpoint here
-void f2(struct bar *b) __attribute__ ((noinline));
+void f2(struct bar *b) __attribute__((noinline)) __attribute__((regparm(1)));
 void f2(struct bar *b)
   int c = b->m2;
   printf("%d\n", c); // set breakpoint here
-float f3() __attribute__ ((noinline));
+float f3() __attribute__((noinline));
 float f3() {
   return 3.14f;

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19548.55050.patch
Type: text/x-patch
Size: 878 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20160426/06858788/attachment.bin>

More information about the lldb-commits mailing list