[llvm-bugs] [Bug 21597] Any regular expression should not match an empty sequence if match_not_null is specified

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=21597

Tim Shen  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||timshe...@gmail.com
 Resolution|--- |FIXED

--- Comment #3 from Tim Shen  ---
Fixed by r284881.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 19851] regex does not correctly handle the regex "a*|b*"

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=19851

Tim Shen  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 CC||timshe...@gmail.com
 Resolution|--- |FIXED

--- Comment #9 from Tim Shen  ---
Fixed by r285352.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 21751] regex iterator endless loop

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=21751

Tim Shen  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||timshe...@gmail.com
 Resolution|--- |FIXED

--- Comment #2 from Tim Shen  ---
PR21597 is fixed. Mark this as fixed.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 28752] Assertion `Parent->isHidden() && "unexpectedly hidden decl"' failed.

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=28752

Vassil Vassilev  changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 CC||benny@gmail.com
 Resolution|FIXED   |---

--- Comment #7 from Vassil Vassilev  ---
I seems this issue reappears. It seems it is related to the reverted commit in
(r284382). "Revert "Reinstate r281429, reverted in r281452, with a fix for its
mishandling of"

This reverts commit r284176. It still marks some modules as invisible
that should be visible. Will follow up with the author with a test case.
"

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30818] New: Infinite loop in Reassociate

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30818

Bug ID: 30818
   Summary: Infinite loop in Reassociate
   Product: new-bugs
   Version: trunk
  Hardware: PC
OS: Linux
Status: NEW
  Severity: normal
  Priority: P
 Component: new bugs
  Assignee: unassignedb...@nondot.org
  Reporter: bjorn.a.petters...@ericsson.com
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

Created attachment 17507
  --> https://llvm.org/bugs/attachment.cgi?id=17507&action=edit
Hangs in reassociate

When running "opt -reassociate" on the following program (also included as
attachment) we end up in an infinite loop:

define void @xor_deadloop() {
  br label %endlabel

deadloop:
  %1 = xor i32 %2, 7
  %2 = xor i32 %1, 8
  br label %deadloop

endlabel:
  ret void
}


Problem was detected when doing randomized tests using csmith.
A dead loop similar to the example below was created by -jump-threading.
According to -verify the code is valid. However, the SSA form of the dead loop
is quite interesting.

--

One solution (to avoid hanging in Reassociate) is to simply avoid analysis of
dead basic blocks.
For example like this patch:

diff --git a/lib/Transforms/Scalar/Reassociate.cpp
b/lib/Transforms/Scalar/Reassociate.cpp
index 1ec7fce..6fc8dc8 100644
--- a/lib/Transforms/Scalar/Reassociate.cpp
+++ b/lib/Transforms/Scalar/Reassociate.cpp
@@ -2177,8 +2177,19 @@ PreservedAnalyses ReassociatePass::run(Function &F,
FunctionAnalysisManager &) {
   // Calculate the rank map for F.
   BuildRankMap(F);

+  // Mark all reachable blocks.
+  df_iterator_default_set Reachable;
+  for (BasicBlock *BB : depth_first_ext(&F, Reachable))
+(void)BB/* Mark all reachable blocks */;
+
   MadeChange = false;
   for (Function::iterator BI = F.begin(), BE = F.end(); BI != BE; ++BI) {
+// Skip dead basic blocks
+if (!Reachable.count(&*BI)) {
+  DEBUG(dbgs() << "Skipping dead BB:"; BI->dump(););
+  continue;
+}
+
 // Optimize every instruction in the basic block.
 for (BasicBlock::iterator II = BI->begin(), IE = BI->end(); II != IE;)
   if (isInstructionTriviallyDead(&*II)) {

--

I noticed that this problem started to appear after this commit
(so it could be an old problem that appeared again after that revert):

commit a537a2bbfe75a0f15deb93efa5dd9f8ad96971e8
Author: Chad Rosier 
Date:   Wed Aug 17 15:54:39 2016 +

Revert "Reassociate: Reprocess RedoInsts after each inst".

This reverts commit r258830, which introduced a bug described in PR28367.

PR28367

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278938
91177308-0d34-0410-b5e6-96231b3b80d8

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30820] New: Linker error: undefined reference to `std::vector<...>::~vector()

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30820

Bug ID: 30820
   Summary: Linker error: undefined reference to
`std::vector<...>::~vector()
   Product: clang
   Version: 3.9
  Hardware: PC
OS: Linux
Status: NEW
  Severity: normal
  Priority: P
 Component: C++
  Assignee: unassignedclangb...@nondot.org
  Reporter: serguei.ko...@cern.ch
CC: dgre...@apple.com, llvm-bugs@lists.llvm.org
Classification: Unclassified

Hi

I have recently encountered the problem of compiling some code which uses
std::vector class. Here is the minimal example which reproduces the problem:

#include 

template 
void f(I i, const std::vector & v = { 1, 2, 3}) {
}

int main(int , char**) {
  f(1);
}

Here is the compiler output:

:> clang++ -std=c++14 t.cc
/tmp/kolos/ttt-460d3b.o: In function `main':
ttt.cc:(.text+0x61): undefined reference to `std::vector >::~vector()'
ttt.cc:(.text+0x92): undefined reference to `std::vector >::~vector()'
clang-3.9: error: linker command failed with exit code 1 (use -v to see
invocation)

Here are the system and compiler details

:> clang++ -v
clang version 3.9.0 (tags/RELEASE_390/final)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /external/llvm/3.9/x86_64-slc6/bin
Found candidate GCC installation:
/contrib/gcc/4.9/x86_64-slc6/lib/gcc/x86_64-unknown-linux-gnu/4.9.3
Selected GCC installation:
/contrib/gcc/4.9/x86_64-slc6/lib/gcc/x86_64-unknown-linux-gnu/4.9.3
Candidate multilib: .;@m64
Selected multilib: .;@m64


:> uname -a
Linux 2.6.32-642.6.1.el6.x86_64 #1 SMP Wed Oct 5 16:49:07 CEST 2016 x86_64
x86_64 x86_64 GNU/Linux

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30582] Incorrect alignment in the indentation

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30582

Daniel Jasper  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #1 from Daniel Jasper  ---
This behavior is intended as you basically have two different "binary"
operators in a set of parenthese: "&&" and ",". Thus, clang-format uses the
extra indentation to highlight that the second line is not just one more
parameter to the surrounding function call.

You can of course avoid that by either pulling out local variables or
surrounding the &&-expression with parentheses.

Again, this is intended. Imagine, you'd have an expression like:

  function( &&
   ,
   ,
    &&
   ,
   );

Obviously this is fabricated, but I have seen many cases, where the extra
indentation makes the code significantly more obvious.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30821] New: Miscompile due to Stack Slot Coloring and partial load/stores

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30821

Bug ID: 30821
   Summary: Miscompile due to Stack Slot Coloring and partial
load/stores
   Product: libraries
   Version: trunk
  Hardware: PC
OS: All
Status: NEW
  Severity: normal
  Priority: P
 Component: Register Allocator
  Assignee: unassignedb...@nondot.org
  Reporter: greg_bedw...@sn.scee.net
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

One of our random test generators found the following miscompile bug.  Here's a
source-level repro-case (reduced and massaged a bit from the initial randomly
generated case to make it a bit less transient, with the added __asm__
statement):

// ===
extern "C" int printf(const char *, ...);

typedef double __m128d __attribute__((__vector_size__(16)));

__attribute__((noinline))
static void init(unsigned char pred, void *data, unsigned size) {
  unsigned char *bytes = (unsigned char *)data;
  for (unsigned i = 0; i != size; ++i) {
bytes[i] = pred + i;
  }
}

int main() {
  volatile unsigned char alpha = 1;
  unsigned char bravo = alpha;

  __m128d foxtrot;
  for (unsigned char charlie = 0; charlie < bravo; ++charlie) {
for (unsigned char golf = 0; golf < 2; ++golf){
  __asm__ volatile ("nop":::"ebx", "r8", "r9", "r12", "r13", "r14", "r15");
  init(0xff, &foxtrot, sizeof(foxtrot));
}
  }

  volatile __m128d india = {23.0, 24.0};
  printf("%lf %lf -> ", india[0], india[1]);
  india[1] = 0.0;
  printf("%lf %lf\n", india[0], india[1]);
}
// ===

$ ./build/bin/clang 1.cpp --version
clang version 4.0.0 (trunk 285395) (llvm/trunk 285397)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/greg/public_git/./build/bin

$ ./build/bin/clang 1.cpp -O0 -target x86_64-unknown-unknown -mavx -o 1.elf &&
./1.elf
23.00 24.00 -> 23.00 0.00

$ ./build/bin/clang 1.cpp -O2 -target x86_64-unknown-unknown -mavx -o 1.elf &&
./1.elf
23.00 24.00 -> 23.00 0.00

$ ./build/bin/clang 1.cpp -O1 -target x86_64-unknown-unknown -mavx -o 1.elf &&
./1.elf
23.00 24.00 -> 23.00 24.00
 ^ INCORRECT RESULT

Note the difference in the -O1 build result.

Here's our initial local analysis of the bug (from Andrea Di Biagio).  Any help
appreciated.

~~~
~~~
The problem is caused by an incorrect simplification performed by the Stack
Slot Coloring pass.
The stack slot coloring pass attempts to reduce the number of stack slots
introduced by the
register allocator when inserting spill/reload code.

After register allocation, we may end up with code that looks similar to the
following pseudo-code:


1. SPILL_REGISTER(regA, SlotA);
2. ...
3. regB = RELOAD_REGISTER(SlotA);
4. SPILL_REGISTER(regB, SlotB);
5. ...
6. RegC = RELOAD_REGISTER(SlotB);
7. ...
///

Here we have two stack slots respectively named 'SlotA' and 'SlotB'.
SlotA is used to spill the value of 'regA'.

Later on, the value of 'regA' is reloaded into register 'regB'.
That register is also spilled in memory to a different stack location.
Eventually, it is reloaded
from stack into yet another register.

Pass Stack Slot Coloring is able to see that 'SlotA' is live between
instructions #1 and #3.
Stack slot 'SlotB' is live between instructions #4 and #6.

Since the liveness ranges for the two slots is disjoint, pass Stack Slot
Coloring attempts to reuse
the same stack slot for both spills/reloads. So we end up with code similar to
this:


1. SPILL_REGISTER(regA, SlotA);
2. ...
3. regB = RELOAD_REGISTER(SlotA);
4. SPILL_REGISTER(regB, SlotA);
5. ...
6. RegC = RELOAD_REGISTER(SlotA);
7. ...
///

So, we saved one stack location, and we exposed some redundancy in the code.
Now, the following two
instructions are redundant:

3. regB = RELOAD_REGISTER(SlotA);
4. SPILL_REGISTER(regB, SlotA);

Therefore, the Stack Slot Coloring pass removes the redundant spill/reload
sequence (3. and 4.).

The problem is that the Stack Slot Coloring pass uses two hook implemented by
the TTI (Target
Instruction Info) interface to figure out if an instruction is a "load from
stack slot" or a "store
to stack slot".

On x86, opcodes MOVSS/MOVSD/VMOVSS/VMOVSD are all valid opcodes for
loads/stores from/to stack
slots.
This is problematic because MOVSS/MOVSD/VMOVSS/VMOVSD are "partial
loads/stores" since those
operats on 32/64 bits only (instead of 128/256). In particular, MOVSSrm/MOVSDrm
are zero-extending
loads.

Let's then have a look at the following example:


1. VMOVUPDmr regA, SlotA;
2. ...
3. regB = VMOVSDrm SlotA;
4. VMOVUPDmr regB, SlotA;
5. ...
6. RegC = VM

[llvm-bugs] [Bug 30822] New: lldb-mi failing in llvm::CommandLine global constructor on debug builds

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30822

Bug ID: 30822
   Summary: lldb-mi failing in llvm::CommandLine global
constructor on debug builds
   Product: lldb
   Version: unspecified
  Hardware: PC
OS: Linux
Status: NEW
  Severity: normal
  Priority: P
 Component: All Bugs
  Assignee: lldb-...@lists.llvm.org
  Reporter: todd.fi...@gmail.com
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

On Ubuntu 14.04 and 16.04 x86_64, I am seeing a failure to run lldb-mi due to
an assert being raised on builds where NDEBUG is not defined.

The failure is in a global constructor in LLVM's Debug.cpp file where it adds a
'debug' command line option.  At the time the global constructor files, the
StringDictionary where the option is being checked for existence seems to
indicate it has something like 7k objects in it, which seems wrong.  Running
through valgrind doesn't show any memory stomps, though.

Here is the CMake/ninja setup I'm using:

# For Ubuntu 14.04
$ CC=clang-3.6 CXX=clang++-3.6 cmake -GNinja -DCMAKE_BUILD_TYPE=Debug ../llvm
-DLLDB_EXPORT_ALL_SYMBOLS=TRUE
$ ninja

Here's the error:
$ bin/lldb-mi
: CommandLine Error: Option 'debug' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options


I am wondering if:
(a) our Ubuntu buildbots are seeing this behavior?
(b) why we're not failing the build?

This regression seems to have been introduced fairly recently, as I have
downstream Ubuntu repositories that I directly manage (ci.swift.org) where we
do run the lldb-mi tests on Ubuntu, and the lldb-mi failure seems to have only
shown up after r281031.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30823] New: LLVM ERROR: Cannot select: t5: v16i8 = BUILD_VECTOR Constant:i32<1>,

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30823

Bug ID: 30823
   Summary: LLVM ERROR: Cannot select: t5: v16i8 = BUILD_VECTOR
Constant:i32<1>,
   Product: libraries
   Version: trunk
  Hardware: PC
OS: All
Status: NEW
  Severity: normal
  Priority: P
 Component: Backend: PowerPC
  Assignee: unassignedb...@nondot.org
  Reporter: jt...@ca.ibm.com
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

jtony@genoa:~/scrum/s1/29$ cat test.ll
define <16 x i8> @test() {
entry:
 ret <16 x i8> 
}

jtony@genoa:~/scrum/s1/29$ llc < test.ll -mcpu=pwr9
.text
.abiversion 2
.file   ""
LLVM ERROR: Cannot select: t5: v16i8 = BUILD_VECTOR Constant:i32<1>,
Constant:i32<2>, Constant:i32<3>, Constant:i32<4>, Constant:i32<1>,
Constant:i32<2>, Constant:i32<3>, Constant:i32<4>, Constant:i32<1>,
Constant:i32<2>, Constant:i32<3>, Constant:i32<4>, Constant:i32<1>,
Constant:i32<2>, Constant:i32<3>, Constant:i32<4>
  t12: i32 = Constant<1>
  t11: i32 = Constant<2>
  t10: i32 = Constant<3>
  t9: i32 = Constant<4>
  t12: i32 = Constant<1>
  t11: i32 = Constant<2>
  t10: i32 = Constant<3>
  t9: i32 = Constant<4>
  t12: i32 = Constant<1>
  t11: i32 = Constant<2>
  t10: i32 = Constant<3>
  t9: i32 = Constant<4>
  t12: i32 = Constant<1>
  t11: i32 = Constant<2>
  t10: i32 = Constant<3>
  t9: i32 = Constant<4>
In function: test

Note this bug only occurs with option -mcpu=pwr9.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30824] New: lldb evaluates $N incorrectly when it was a printed register value

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30824

Bug ID: 30824
   Summary: lldb evaluates $N incorrectly when it was a printed
register value
   Product: lldb
   Version: 3.8
  Hardware: PC
OS: Linux
Status: NEW
  Severity: normal
  Priority: P
 Component: All Bugs
  Assignee: lldb-...@lists.llvm.org
  Reporter: r...@swtch.com
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

Using Ubuntu 14.04 LTS's lldb-3.8 package to debug a trivial program, try
printing a register value (first print, so it ends up being $0) and then
referring to that print in a later expression. The later reference is
incorrectly evaluated:

$ echo 'int main() {return 0;}' | gcc -xc - -o a.out # any binary will do
$ lldb-3.8 --version
lldb version 3.8.0 ( revision )
$ lldb-3.8 a.out
(lldb) target create "a.out"
Current executable set to 'a.out' (x86_64).
(lldb) b main
Breakpoint 1: where = a.out`main, address = 0x004004ed
(lldb) r
Process 62061 launched: '/usr/local/google/home/rsc/a.out' (x86_64)
Process 62061 stopped
* thread #1: tid = 62061, 0x004004ed a.out`main, name = 'a.out', stop
reason = breakpoint 1.1
frame #0: 0x004004ed a.out`main
a.out`main:
->  0x4004ed <+0>: pushq  %rbp
0x4004ee <+1>: movq   %rsp, %rbp
0x4004f1 <+4>: movl   $0x0, %eax
0x4004f6 <+9>: popq   %rbp
(lldb) print/x $rdi
(unsigned long) $0 = 0x0001
(lldb) print/x ($rdi)
(unsigned long) $1 = 0x0001
(lldb) print/x $0
(unsigned long) $0 = 0x0001
(lldb) print/x ($0)
(unsigned long) $2 = 0x77ff6008  <<< WRONG!
(lldb) 

$0 and ($0) should evaluate to the same value. The final print is wrong. This
happens in any non-trivial expression involving printed register values.
Continuing:

(lldb) print/x $rdi
(unsigned long) $3 = 0x0001
(lldb) print/x $rsi
(unsigned long) $4 = 0x7fffe058
(lldb) print/x $rdi+$rsi
(unsigned long) $5 = 0x7fffe059
(lldb) print/x $3+$4
(unsigned long) $6 = 0xeffec010  <<< WRONG!
(lldb)

And so on.

I see this on OS X with the Xcode toolchain lldb as well.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30825] New: Dont generate __powi{d, s}f2 calls for Windows

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30825

Bug ID: 30825
   Summary: Dont generate __powi{d,s}f2 calls for Windows
   Product: libraries
   Version: trunk
  Hardware: PC
OS: All
Status: NEW
  Severity: normal
  Priority: P
 Component: Backend: ARM
  Assignee: unassignedb...@nondot.org
  Reporter: compn...@compnerd.org
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

Calls to `@llvm.powi.f64` and `@llvm.powi.f32` generate calls to
`__powi{d,s}f2` on Windows.  These should be reduced to calls to `powf` with
the appropriate casts.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30826] New: commit 3dd46201c189fb17da44fb4457afe692ad5dd5d9

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30826

Bug ID: 30826
   Summary: commit 3dd46201c189fb17da44fb4457afe692ad5dd5d9
   Product: libc++
   Version: unspecified
  Hardware: PC
OS: Linux
Status: NEW
  Severity: normal
  Priority: P
 Component: All Bugs
  Assignee: unassignedclangb...@nondot.org
  Reporter: minseong@linaro.org
CC: llvm-bugs@lists.llvm.org, mclow.li...@gmail.com
Classification: Unclassified

commit 3dd46201c189fb17da44fb4457afe692ad5dd5d9 merged at Oct 28
causes the following error when building with clang:
llvm/projects/libcxx/include/__config:912:38: error: expected unqualified-id
before string constant
 _LIBCPP_FUNC_VIS _LIBCPP_WEAK extern "C++" int __libcpp_library_version();

Should be reverted ?

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30827] New: [mc] No checks for immediate operands size

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30827

Bug ID: 30827
   Summary: [mc] No checks for immediate operands size
   Product: libraries
   Version: trunk
  Hardware: PC
OS: Windows NT
Status: NEW
  Severity: enhancement
  Priority: P
 Component: Backend: AMDGPU
  Assignee: unassignedb...@nondot.org
  Reporter: i.am.permi...@gmail.com
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

If immediate operand doesn't fit into instruction assembler just silently
truncates it. For example:
s_mulk_i32 s2, 0x8000 * 4

Assembler will produce following isa without any warning or error:
s_mulk_i32 s2, 0x  // 077C: B782

We need to check such cases and show appropriate message (error).

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30828] New: __attribute__((notnull)) in prototype's parameter is forgotten after function definition

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30828

Bug ID: 30828
   Summary: __attribute__((notnull)) in prototype's parameter is
forgotten after function definition
   Product: clang
   Version: trunk
  Hardware: PC
OS: All
Status: NEW
  Severity: normal
  Priority: P
 Component: -New Bugs
  Assignee: unassignedclangb...@nondot.org
  Reporter: t...@iki.fi
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

Using __attribute__((notnull)) in prototype's parameter works as long as the
function definition hasn't been seen. Afterwards the notnull attribute is lost
and no more warnings are given. This same problem doesn't happen when using
__attribute__((notnull(1))) style.

Example:

//static void foo(char *p) __attribute__((nonnull(1))); // 2 warnings
static void foo(char *p __attribute__((nonnull))); // 1 warning

static void bar(char *p)
{
foo(0); // always gets a warning
}

static void foo(char *p) { }

int main(void)
{
foo(0); // warning missing here
bar(0);
return 0;
}

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30829] New: [mc][gfx8] No checks for ADDC/SUBB/V_CNDMASK source operand restrictions

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30829

Bug ID: 30829
   Summary: [mc][gfx8] No checks for ADDC/SUBB/V_CNDMASK source
operand restrictions
   Product: libraries
   Version: trunk
  Hardware: PC
OS: Windows NT
Status: NEW
  Severity: normal
  Priority: P
 Component: Backend: AMDGPU
  Assignee: artem.tama...@amd.com
  Reporter: i.am.permi...@gmail.com
CC: andrey.kasau...@gmail.com, artem.tama...@amd.com,
i.am.permi...@gmail.com, llvm-bugs@lists.llvm.org,
nikolay.haus...@amd.com, sam.kol...@amd.com,
valery.pykh...@gmail.com
Classification: Unclassified

SGPR, M0, EXEC or literal constant are not allowed for ADDC/SUBB/V_CNDMASK
instructions. Still assembler allows illegal encodings like:

v_addc_u32 v40, vcc, s49, 0, vcc

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30830] New: LLD linker script test failure on AArch64

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30830

Bug ID: 30830
   Summary: LLD linker script test failure on AArch64
   Product: lld
   Version: unspecified
  Hardware: PC
OS: Linux
Status: NEW
  Severity: normal
  Priority: P
 Component: ELF
  Assignee: unassignedb...@nondot.org
  Reporter: renato.go...@linaro.org
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

It seems LLD is calculating offsets wrong in AArch64:

ELF/linkerscript/locationcounter.s

# RUN:  . = 0x3 + (1 + 1023 >> 2); \
# RUN:  .shiftr : { *(.shiftr) }

...

test/ELF/linkerscript/locationcounter.s:74:10: error: expected string not found
in input
# CHECK: .shiftr {{.*}} 00030100
 ^
:26:39: note: scanning from here
 20 .shiftl 0008 00030040 DATA 
  ^
:27:3: note: possible intended match here
 21 .shiftr 0008 00030400 DATA 
  ^

It should not be 0x30400, but the expected 0x30100

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30826] commit 3dd46201c189fb17da44fb4457afe692ad5dd5d9

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30826

Eric Fiselier  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #1 from Eric Fiselier  ---
I'm pretty sure your using GCC not Clang, unless GCC and Clang emit
letter-for-letter identical errors.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30831] New: Parser segmentation fault

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30831

Bug ID: 30831
   Summary: Parser segmentation fault
   Product: clang
   Version: 3.9
  Hardware: PC
OS: Linux
Status: NEW
  Severity: normal
  Priority: P
 Component: C++
  Assignee: unassignedclangb...@nondot.org
  Reporter: jj.oconno...@gmail.com
CC: dgre...@apple.com, llvm-bugs@lists.llvm.org
Classification: Unclassified

Created attachment 17508
  --> https://llvm.org/bugs/attachment.cgi?id=17508&action=edit
contains test.cpp, the stack traces from 3.8 and 3.9, the above text, and the
/tmp files those stacks told me to include with a bug report

I wrote some nonsense code by accident and segfaulted the parser. It's short
enough to fit in here (it's only 8 lines):

__
template 
class A {
public:
  static A const a;
};

template 
A A::a = A();
__

The parser says it was on the token '=' when it died.

The compiler (specifically the parse step) crashes with this invocation:
$ clang++ test.cpp

Also:
$ clang++-3.9 test.cpp

Here's some OS and version information:

$ clang++ --version
clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

$ clang++-3.9 --version
clang version 3.9.0-svn275918-1~exp1 (branches/release_39)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

$ cat /etc/*release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
NAME="Ubuntu"
VERSION="16.04.1 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.1 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/";
SUPPORT_URL="http://help.ubuntu.com/";
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/";
UBUNTU_CODENAME=xenial

$ uname -a
Linux refraction 4.4.0-34-generic #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC 2016
x86_64 x86_64 x86_64 GNU/Linux

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30832] New: Can't fold a reload if spill size doesn't match use size

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30832

Bug ID: 30832
   Summary: Can't fold a reload if spill size doesn't match use
size
   Product: libraries
   Version: trunk
  Hardware: PC
OS: Linux
Status: NEW
  Severity: normal
  Priority: P
 Component: Backend: X86
  Assignee: unassignedb...@nondot.org
  Reporter: mku...@google.com
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

This is something we currently explicitly don't do because targets aren't
required to support it (InlinerSpiller::foldMemoryOperand()).

So for:

target triple = "x86_64-unknown-linux-gnu"

define i32 @foo(i64 %add, i32 %ret) {
entry:
  tail call void asm sideeffect "",
"~{rax},~{rbx},~{rcx},~{rdx},~{rdi},~{rbp},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15},~{dirflag},~{fpsr},~{flags}"()
  %conv3 = zext i32 %ret to i64
  %sub = sub i64 %conv3, %add
  %conv1 = trunc i64 %sub to i32
  ret i32 %conv1
}

we generate:

[...]
movq%rdi, -8(%rsp)  # 8-byte Spill
movq-8(%rsp), %rax  # 8-byte Reload
subl%eax, %esi
[...]

The same also happens for vector registers (spill ymm, reload ymm, use xmm).

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30831] Parser segmentation fault

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30831

Richard Smith  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||richard-l...@metafoo.co.uk
 Resolution|--- |FIXED

--- Comment #1 from Richard Smith  ---
Fixed in r285437.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30833] New: [ppc] Use cmplwi insead of rlwinm. to compare bool var

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30833

Bug ID: 30833
   Summary: [ppc] Use cmplwi insead of rlwinm. to compare bool var
   Product: libraries
   Version: trunk
  Hardware: PC
OS: Linux
Status: NEW
  Severity: normal
  Priority: P
 Component: Backend: PowerPC
  Assignee: unassignedb...@nondot.org
  Reporter: car...@google.com
CC: llvm-bugs@lists.llvm.org
Classification: Unclassified

Compile the following code with options -m64 -O2

struct A { 
   long V() const { return f4 ? f1: f2; }
   bool IsDone() const { return f3 >= V(); }

long f1, f2; 
int f3; 
bool f4; 
  };  

struct B { 
bool IsDone() const { return  f6 >= f5.f1; }

void Next();

A f5; 
int f6; 
  };  

extern A qux();
extern B bar();

void B::Next() {
  while (f5.IsDone()) {
f5 = qux();
  }
}

void foo() {
B iter = bar();
while (!iter.IsDone()) {
  iter.Next();
}   
}

LLVM generates:

...
lwz 4, 112(31)
lbz 5, 116(31)
ld 7, 104(31)
addi 29, 31, 128 
.p2align4
.LBB1_2:# %while.body
# =>This Loop Header: Depth=1
# Child Loop BB1_3 Depth 2
rlwinm. 8, 5, 0, 24, 31 // A
extsw 8, 4
isel 9, 7, 3, 2
cmpd 8, 9
blt  0, .LBB1_5
.p2align4
.LBB1_3:# %while.body.i
#   Parent Loop BB1_2 Depth=1
# =>  This Inner Loop Header: Depth=2
mr 3, 29
bl _Z3quxv
nop
lxvd2x 0, 0, 29
stxvd2x 0, 0, 30
ori 2, 2, 0
ld 3, 144(31)
std 3, 112(31)
ori 2, 2, 0
lbz 5, 116(31)
ld 3, 96(31)
ld 7, 104(31)
lwa 4, 112(31)
cmplwi   5, 0   // B
isel 6, 7, 3, 2
cmpd 4, 6
bge 0, .LBB1_3
# BB#4: # %while.cond.backedge.loopexit
#   in Loop: Header=BB1_2 Depth=1
lwz 6, 120(31)
.LBB1_5:# %while.cond.backedge
#   in Loop: Header=BB1_2 Depth=1
extsw 8, 6
cmpd 8, 3
blt  0, .LBB1_2
...

Note that instruction A is actually comparing a bool variable loaded from
116(31), it can be replaced with a slightly faster instruction cmplwi, just
like instruction B.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs


[llvm-bugs] [Bug 30834] New: Merge r283427 into the 3.9 branch

2016-10-28 Thread via llvm-bugs
https://llvm.org/bugs/show_bug.cgi?id=30834

Bug ID: 30834
   Summary: Merge r283427 into the 3.9 branch
   Product: libraries
   Version: 3.9
  Hardware: PC
OS: Windows NT
Status: NEW
  Severity: normal
  Priority: P
 Component: Support Libraries
  Assignee: unassignedb...@nondot.org
  Reporter: tav...@gmail.com
CC: llvm-bugs@lists.llvm.org
Blocks: 30261
Classification: Unclassified

cygwin build fix

-- 
You are receiving this mail because:
You are on the CC list for the bug.
___
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs