mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
Use std::map rather than SmallMap because SmallMap assumes that the value has
POD type, causing memory corruption when mapping to APInts with bitwidth > 64. Merge another crash testcase into crash.ll while there. llvm-svn: 158369
This commit is contained in:
parent
9734752b2c
commit
74fd0e6f20
@ -38,7 +38,6 @@
|
|||||||
#include "llvm/ADT/DenseMap.h"
|
#include "llvm/ADT/DenseMap.h"
|
||||||
#include "llvm/ADT/PostOrderIterator.h"
|
#include "llvm/ADT/PostOrderIterator.h"
|
||||||
#include "llvm/ADT/SetVector.h"
|
#include "llvm/ADT/SetVector.h"
|
||||||
#include "llvm/ADT/SmallMap.h"
|
|
||||||
#include "llvm/ADT/STLExtras.h"
|
#include "llvm/ADT/STLExtras.h"
|
||||||
#include "llvm/ADT/Statistic.h"
|
#include "llvm/ADT/Statistic.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@ -486,7 +485,7 @@ static bool LinearizeExprTree(BinaryOperator *I,
|
|||||||
|
|
||||||
// Leaves - Keeps track of the set of putative leaves as well as the number of
|
// Leaves - Keeps track of the set of putative leaves as well as the number of
|
||||||
// paths to each leaf seen so far.
|
// paths to each leaf seen so far.
|
||||||
typedef SmallMap<Value*, APInt, 8> LeafMap;
|
typedef std::map<Value*, APInt> LeafMap;
|
||||||
LeafMap Leaves; // Leaf -> Total weight so far.
|
LeafMap Leaves; // Leaf -> Total weight so far.
|
||||||
SmallVector<Value*, 8> LeafOrder; // Ensure deterministic leaf output order.
|
SmallVector<Value*, 8> LeafOrder; // Ensure deterministic leaf output order.
|
||||||
|
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
; RUN: opt < %s -reassociate -disable-output
|
|
||||||
|
|
||||||
define void @test(i32 %a, i32 %b, i32 %c, i32 %d) {
|
|
||||||
%tmp.2 = xor i32 %a, %b ; <i32> [#uses=1]
|
|
||||||
%tmp.5 = xor i32 %c, %d ; <i32> [#uses=1]
|
|
||||||
%tmp.6 = xor i32 %tmp.2, %tmp.5 ; <i32> [#uses=1]
|
|
||||||
%tmp.9 = xor i32 %c, %a ; <i32> [#uses=1]
|
|
||||||
%tmp.12 = xor i32 %b, %d ; <i32> [#uses=1]
|
|
||||||
%tmp.13 = xor i32 %tmp.9, %tmp.12 ; <i32> [#uses=1]
|
|
||||||
%tmp.16 = xor i32 %tmp.6, %tmp.13 ; <i32> [#uses=0]
|
|
||||||
ret void
|
|
||||||
}
|
|
||||||
|
|
@ -67,3 +67,19 @@ _33: ; preds = %_33, %_
|
|||||||
%tmp367 = add i32 %tmp365, %tmp366
|
%tmp367 = add i32 %tmp365, %tmp366
|
||||||
br label %_33
|
br label %_33
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define void @test(i32 %a, i32 %b, i32 %c, i32 %d) {
|
||||||
|
%tmp.2 = xor i32 %a, %b ; <i32> [#uses=1]
|
||||||
|
%tmp.5 = xor i32 %c, %d ; <i32> [#uses=1]
|
||||||
|
%tmp.6 = xor i32 %tmp.2, %tmp.5 ; <i32> [#uses=1]
|
||||||
|
%tmp.9 = xor i32 %c, %a ; <i32> [#uses=1]
|
||||||
|
%tmp.12 = xor i32 %b, %d ; <i32> [#uses=1]
|
||||||
|
%tmp.13 = xor i32 %tmp.9, %tmp.12 ; <i32> [#uses=1]
|
||||||
|
%tmp.16 = xor i32 %tmp.6, %tmp.13 ; <i32> [#uses=0]
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
define i128 @foo() {
|
||||||
|
%mul = mul i128 0, 0
|
||||||
|
ret i128 %mul
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user